php密码注入,php防止sql注入之万能密码以及防范

说什么叫sql注入呢?

就是在登录、注册、input中输入一些影响sql语句的代码

导致你的sql语句出现问题,比如说这个问题:

c3720ecac82f3331f4ffbf5c2b747261.png

select * from web_manage where username='xxx' and pass='ddd' or '1'

所有的sql注入或攻击就是破坏原有的sql语句,然后执行or  这样就可以得到数据了,犹如上面截图所示。

万能用户名看看是怎么回事:

我们还是以登录为准

select * from web_manage where username='xiaosong' and pass=md5("123") limit 1;

这是正确的一个sql语句,那么如何通过注入呢?  # 这就可以防止后面的代码执行

看看这句代码

da849f1cbe0e688cc049c708038d826b.png

xiaosong 像这样的内容都是 input来的,我们需要对这些数据进行转义

以下这两种方式都可以防止:

addslashes()

mysql_real_escape_string()

就是在收集数据的时候,把内容转义。

select * from web_manage where username='xiao\'song or 1 #' and islogin =1 \G;

f9b050d51b992640381c448a887fcb2c.png

再说一点就是删除

delete from web_manage where id =1 or 1

这句话就把所有的数据全部删除了

因为加了or

php代码

id= 1 or 1

$id=$_GET['id'];

$sql="delete from web_manage where id = $id " ;

就是这样一拼接就玩完了:

delete from web_manage where id =1 or 1

全部删除了,

那么有什么解决方案呢:

把id转换成 数字类型

1、intval

2、让他参与运算,隐士转换成数字。

就是这样就可以防范 id 的delete方法。

XSS攻击

Xss:Cross site Script 攻击

通过动态的代码,插入css、js代码,进行攻击

就是没有将这些代码实体输出,比如在input中输入了

通过这文化函数进行转义保存,把< > 转义成  >  < 这样的字符保存

htmlspecialchars()

htmlentites()  反转义 转回实体

strip_tags() 去掉html标签和php标签

  这样的代码如果你没有 htmlentites() 实体转义 就会造成页面混乱。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值