SQL注入攻击其实就是对数据转义不完全,破坏了预期的sql查询语句的结构,那么今天来聊一聊数据的转义与清理,做好它就能避免这类型的攻击。
php程序曾经出现过魔术引号magic_quotes功能,开启时会自动对数据转义,该功能从5.3版本起废止,并在5.4版本中移除,他们是以下三个:
magic_quotes_sybase:
开启这个选项后,将用单引号对单引号转义,其他字符不转义。默认关闭,可在运行时修改,ini_get()ini_set()获取和设置状态
magic_quotes_gpc:
为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。 当 magic_quotes 为 on,所有的 ' (单引号)、" (双引号)、\(反斜杠)和 NUL's 被一个反斜杠自动转义。如果 magic_quotes_sybase 也是 ON,它会完全覆盖 magic_quotes_gpc。 两个指令都启用意味着只有单引号被转义为 ''(用单引号对单引号转义)。 双引号、反斜杠和 NUL's 不会被转义。bool get_magic_quotes_gpc ( void )获取当前 magic_quotes_gpc 的配置选项设置,注意尝试在运行时设置 magic_quotes_gpc 将不会生效,只能在系统级别关闭。
magic_quotes_runtime:
如果启用了 magic_quotes_runtime,大多数返回任何形式外部数据的函数,包括数据库和文本段将会用反斜线转义引号。 如果启用了 magic_quotes_sybase,单引号会被单引号转义而不是反斜线。bool set_magic_qu