前言 本文章主要以后端PHP和MySQL数据库为例,参考了多篇文章后的集合性文章,欢迎大家提出个人见解,互促成长。 一、PHP几种防御姿势1、关闭错误提示说明:PHP配置文件php.ini中的display_errors=Off,这样就关闭了错误提示。 2、魔术引号说明:当php.ini里的magic_quotes_gpc=On时。提交的变量中所有的单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)会自动转为含有反斜线的转义字符。 魔术引号(Magic Quote)是一个自动将进入 PHP 脚本的数据进行转义的过程。(对所有的 GET、POST 和 COOKIE 数据自动运行转义) PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on。 本特性已自PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除,在PHP 5.4.O 起将始终返回 FALSE。 参考:《magic_quotes_gpc相关说明》: http://www.cnblogs.com/qiantuwuliang/archive/2009/11/12/1601974.html 3、addslashes说明:addslashes函数,它会在指定的预定义字符前添加反斜杠转义,这些预定义的字符是:单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。 这个函数的作用和magic_quotes_gpc一样。所以一般用addslashes前会检查是否开了magic_quotes_gpc。
magic_quotes_gpc与addslashes的区别用法:1)对于magic_quotes_gpc=on的情况 我们可以不对输入和输出数据库的字符串数据作addslashes()和stripslashes()的操作,数据也会正常显示。 如果此时你对输入的数据作了addslashes()处理,那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。 2)对于magic_quotes_gpc=off 的情况 必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出, 因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。 参考:《addslashes函数说明》: https://secure.php.net/manual/zh/function.addslashes.php 《对于magic_quotes_gpc的一点认识》: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|