XSS,sql注入入参安全校验

案例1:跨站运行脚本(XSS)

<html>

<form>

<input name="foo" value=' <?php {$_GET['foo']} ?>' >

</form>

</html>

alert('foo')

11005865-f48f8648e2b6d1b0.png

请求参数输入上面内容

11005865-91181478eda1d4df.png

执行上面会出现

上面输入只是简单案例,按照这个思路那么我们可以在里面执行任何JavaScript代码

解决方法:

使用strip_tags()从字符串中去除 HTML 和 PHP 标记或者使用htmlentities()

 

11005865-9783ef67ca89d2bb.png

 

11005865-d4f617de4c44b460.png

案例2:sql注入

select * from  user_info   from   users  where user='$user'  and   pwd='$pwd';

对于上面的sql我们可以输入

http://xxxxx?user=admin'#

解决方法:

对输入进行addslashes()进行转义处理

使用pdo的预处理语句

 

案例3:校验请求参数是不是被篡改

解决方式:

1.md5校验

大概思路就是将请求参数按照相互约定的顺序(一般是字母顺序)进行拼接,然后MD5,服务端收到请求之后也用同样的规则得到一个MD5值,相互比对两者.相同则代表没有被修改,不同则说明被修改过

11005865-e9fc1ad71c3a3474.png

2.进阶校验(HMAC 鉴定信息的关键字散列)

可以使用HMAC,他使用一个加密的键值对明文进行双重散列处理

hash_hmac('md5', $data, $key)

algo 要使用的哈希算法名称,例如:"md5","sha256","haval160,4" 等。

data 要进行哈希运算的消息。

key 使用 HMAC 生成信息摘要时所使用的密钥。

过滤函数

filter_var—使用特定的过滤器过滤一个变量,各种变量校验

filter_var('127.0.0.1',FILTER_VALIDATE_IP)   //ip

filter_var('127.0.0.1',FILTER_VALIDATE_EMAIL)  //邮箱

 

同时记录下几个工具,在packagist可以找到

aura/filter

respect/validation

symfony/validator

PHP: filter_var - Manual

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值