首页 存档 技术 查看内容

SQL注入防御与绕过的几种姿势

2018-3-30 13:00 |来自: 互联网 350 0

摘要: 前言 本文章主要以后端PHP和MySQL数据库为例,参考了多篇文章后的集合性文章,欢迎大家提出个人见解,互促成长。 一、PHP几种防御姿势 1、关闭错误提示 说明: PHP配置文件php.ini中的display_errors=Off,这样 ...

前言

本文章主要以后端PHPMySQL数据库为例,参考了多篇文章后的集合性文章,欢迎大家提出个人见解,互促成长。

一、PHP几种防御姿势

1、关闭错误提示

说明:

PHP配置文件php.ini中的display_errors=Off,这样就关闭了错误提示。

2、魔术引号

说明:

php.ini里的magic_quotes_gpc=On时。提交的变量中所有的单引号(')、双引号(")、反斜线(\)与 NULNULL 字符)会自动转为含有反斜线的转义字符。

魔术引号(Magic Quote)是一个自动将进入 PHP 脚本的数据进行转义的过程。(对所有的 GETPOST 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

3addslashes

说明:

addslashes函数,它会在指定的预定义字符前添加反斜杠转义,这些预定义的字符是:单引号(')、双引号(")、反斜线(\)与 NULNULL 字符)。

这个函数的作用和magic_quotes_gpc一样。所以一般用addslashes前会检查是否开了magic_quotes_gpc

magic_quotes_gpcaddslashes的区别用法:

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的一点认识》:

http://www.phpfans.net/bbs/viewthread.php?tid=6860

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部