2010-04-07 28 views

Respuesta

18

utilizar una etiqueta <cfqueryparam> para su Identificación:
http://www.adobe.com/livedocs/coldfusion/6.1/htmldocs/tags-b20.htm

<cfquery name="rsRecord" datasource="DataSource"> 
    SELECT * FROM Table 
    WHERE id = 
    <cfqueryparam value = "#url.id#" 
     CFSQLType = "CF_SQL_INTEGER"> 
</cfquery> 
+0

@Joel Coehoorn: ¿me puede dar un ejemplo? ¡Gracias! –

4
  • utilizar un procedimiento almacenado parametrizado
  • cfqueryparam
  • manejo de errores en torno consulta individual
  • manejo de sitio a través de <cferror> de error
  • lógica que limita el número de solicitud que provienen de una dirección IP específica en un momento dado
  • asegurar la cuenta de usuario de base de datos sólo tiene acceso a las acciones específicas que debe
0

Usando cfqueryparam es para prevenir la inyección de SQL es buena. Sin embargo, no puede usar cachewithin en la etiqueta cfquery si desea usar cfqueryparam. Mi otro consejo es que al igual que

Poner esta condición en la parte superior de la página.

< CFIF IsDefined ("id") y no IsNumeric (id) > < cfabort ShowError = "No válido cadena de consulta" > </CFIF >

En su etiqueta de la consulta, utilice como este:

donde id = #Val (id) #

Véase también, cómo prevenir: http://ppshein.wordpress.com/2008/08/28/block-ip-in-coldfusion/

+0

Es mejor implementar el almacenamiento en caché manualmente que tratar de implementar la protección de la base de datos manualmente. –

+0

probablemente sea mejor usar cfparam para hacer cumplir la escritura al menos, pero estoy de acuerdo, casi siempre es mejor arruinar el almacenamiento en caché que arruinar la seguridad – Grey

3

Además de cfqueryparam puede utilizar CFPARAM en la parte superior de la página que contiene el código SQL para cada variable se le ha pasado. Esto ayuda a la documentación también.

p. Ej.

<cfparam name="url.id" type="integer"> 

o más avanzado:

<cfparam name="url.id" type="regex" pattern="\d" default=""> 

Desde patrón de expresión regular se permite, estos pueden ser extremadamente poderosa:

<cfparam name="form.place" type="regex" pattern="[A-Z0-9]{1,6}|" default=""> 
     <!--- Upper case Alpa or Numeric, 1-6 characters or empty string ---> 

También asegúrese de usar un cferror en su aplicación . cfm o application.cfc para evitar exponer su tabla de consulta y nombres de columnas

Cuestiones relacionadas