域名后斜杠试探服务器信息防注入,防止SQL注入

一、防止SQL注入

什么是SQL注入攻击?

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

寻找SQL注入的方法:

1.通过get请求

2.通过post请求

3.其他http请求,如cookie

常见的SQL注入问题:数据库查询参数的类型转换处理

1. 转义字符处理不当

Talk is cheap,Show me the code.

多说无益,代码亮出来吧!

1 //构造动态SQL语句

2 $sql = "select * from tbl where field = '$_GET['input']'";3

4 //执行SQL语句

5 $res = mysql_query($sql);

测试:

在下边的网址后边加一个单引号,就会报数据库错误

http://testphp.vulnweb.com/ar...

db4d9b172231064315f7604c57cc4e18.png

2. 类型处理不当

1 //构造动态SQL语句

2 $sql = "select * from tbl where field = $_GET['user_id']";3

4 //执行SQL语句

5 $res = mysql_query($sql);

Mysql内置了一个命令,可以读取文件

1 Union all select load_file('/etc/passwd')--

2

3 select * from tbl where userid = 1 union all select load_file('etc/passwd')--

该命令会获取数据库管理员的密码。

处理方法:

需要将客户端传过来的数据进行类型强制转换,而后再查询

1 $user_id = (int)$_GET['user_id'];2

3 "select * from tbl where userid = {$user_id}";

3. 查询语句组织不当

1 user.php?table=user&

4. 错误处理不当

即将站点的错误信息暴漏给用户,这样非常危险。

1 //构造动态查询语句

2

3 $getid = "select * from tbl where userid > 1";4

5 //执行SQL语句

6

7 $res = mysql_query($getid) or die('

'.mysql_error().'
');8

9 5.多个提交处理不当10

11 //参数是否是一个字符串

12

13 if(is_string($_GET["param"])){}

数据入库时将转换单引号、双引号、反斜杠为实体

在入库的时候如果不过滤 ' ""这样的东西,这样会使数据库报错,或者注入等问题。

先将字符串用htmlspecialchars()转换为实体后存储到数据库,然后从数据库读出来时htmlspecialchars_decode()转为HTML标签。

htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。

函数原型:

1 htmlspecialchars(string,quotestyle,character-set)

预定义的字符是:

1 & (和号) 成为 &2

3 ” (双引号) 成为 "4

5 ‘ (单引号) 成为 '

6

7 < (小于) 成为 <8

9 > (大于) 成为 >

htmlspecialchars_decode() 函数把一些预定义的 HTML 实体转换为字符(和htmlspecialchars相反)。

函数原型:

1 htmlspecialchars_decode(string,quotestyle)

链接:https://mp.weixin.qq.com/s/E_N7AYeojASvwaRpEV6oWw

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值