Ewebeditor y fckeditork editor filtran comillas simples
Usamos el método de escritura SQL=insertar en valores de producto (título, contenido) (' &request(title)& ' ,' &request(content)& ' ), por lo que encontramos el contenido que el cliente copió en el editor en ese momento. Y descubrí que, efectivamente, este contenido contiene comillas simples. Resulta que fue precisamente porque el contenido enviado por el cliente al editor contenía comillas simples que nuestra declaración SQL cambió, lo que equivale a SQL = insertar en producto (. título, contenido) valores ('contenido'). ,'content') se convierte en SQL=insert into product(title,content) value('content','content''). Si miramos de cerca, sabremos que solo porque hay una comilla simple adicional en el contenido, Se produce un error de escritura grave en la declaración SQL. Sin embargo, también nos sorprende que, dado que está escrita incorrectamente, ¿por qué la declaración SQL no muestra un mensaje de error y también nos indica que la operación se realizó correctamente? Piense en los pequeños hackers comunes en los años 2003. Me gusta usar 'o' =' o' El método de intrusión en segundo plano parece aprovechar el error de que las comillas simples no se filtran cuando se ejecuta SQL. Como resultado, no importa cómo se ejecute SQL, el resultado es verdadero Jaja, no esperaba eso. Escribir el programa debe ser lo más simple y claro posible, lo cual también es un error. Bien, se ha encontrado el problema. En el futuro, antes de ingresar todo el SQL en la base de datos, filtraremos los campos antes de pasar el valor, para que este problema ya no ocurra. A continuación se muestra una función de filtrado de seguridad de SQL muy completa. Puedes usarlo. Está listo para ser llamado.
Función HTMLEncode(Str)
Si es nulo (Str) entonces
Código HTML =
Función de salida
Terminar si
Str = Reemplazar(Str,Chr(0),, 1, -1, 1)
Str = Reemplazar(Str, , ", 1, -1, 1)
Str = Reemplazar(Str,<,<, 1, -1, 1)
Str = Reemplazar(Str,>,>, 1, -1, 1)
Str = Reemplazar(Str, script, script, 1, -1, 0)
Str = Reemplazar (Str, SCRIPT, SCRIPT, 1, -1, 0)
Str = Reemplazar(Str, Script, Script, 1, -1, 0)
Str = Reemplazar(Str, script, Script, 1, -1, 1)
Str = Reemplazar (Str, objeto, objeto, 1, -1, 0)
Str = Reemplazar (Str, OBJETO, OBJETO, 1, -1, 0)
Str = Reemplazar (Str, Objeto, Oobjeto, 1, -1, 0)
Str = Reemplazar (Str, objeto, objeto, 1, -1, 1)
Str = Reemplazar(Str, subprograma, applet, 1, -1, 0)
Str = Reemplazar(Str, APPLET, APPLET, 1, -1, 0)
Str = Reemplazar(Str, Applet, Applet, 1, -1, 0)
Str = Reemplazar(Str, subprograma, Applet, 1, -1, 1)
Cadena = Reemplazar (Cadena, [, [)
Str = Reemplazar(Str, ], ])
Str = Reemplazar(Str, , , 1, -1, 1)
Str = Reemplazar(Str, =, =, 1, -1, 1)
Cadena = Reemplazar (Cadena, ', '', 1, -1, 1)
Str = Reemplazar (Str, seleccionar, seleccionar, 1, -1, 1)
Str = Reemplazar (Str, ejecutar, & #101xecute, 1, -1, 1)
Str = Reemplazar (Str, ejecutivo, exec, 1, -1, 1)
Str = Reemplazar(Str, unir, unión, 1, -1, 1)
Str = Reemplazar(Str, union, union, 1, -1, 1)
Str = Reemplazar (Str, donde, dónde, 1, -1, 1)
Str = Reemplazar(Str, insertar, insertar, 1, -1, 1)
Str = Reemplazar(Str, eliminar, eliminar, 1, -1, 1)
Str = Reemplazar(Str, actualizar, actualizar, 1, -1, 1)
Str = Reemplazar(Str, me gusta, me gustae, 1, -1, 1)
Str = Reemplazar(Str, soltar, drop, 1, -1, 1)
Str = Reemplazar(Str, crear, crear, 1, -1, 1)
Str = Reemplazar(Str, renombrar, ren'me, 1, -1, 1)
Str = Reemplazar (Str, contar, contar, 1, -1, 1)
Str = Reemplazar(Str, chr, chr, 1, -1, 1)
Str = Reemplazar(Str, mid, mid, 1, -1, 1)
Str = Reemplazar (Str, truncar, truncar, 1, -1, 1)
Str = Reemplazar(Str, nchar, nch'r, 1, -1, 1)
Str = Reemplazar(Str, char, ch'r, 1, -1, 1)
Str = Reemplazar(Str, alterar, alter, 1, -1, 1)
Str = Reemplazar(Str, cast, ca't, 1, -1, 1)
Str = Reemplazar(Str, existe, exists, 1, -1, 1)
Str = Reemplazar(Str,Chr(13), , 1, -1, 1)
HTMLEncode = Reemplazar(Str,','', 1, -1, 1)
Función final