案例1:跨站运行脚本

<html>

<form>

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

</form>

</html>

alert('foo')

入参安全校验

请求参数输入上面内容

入参安全校验

执行上面会出现

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

解决方法:

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

 

入参安全校验

 

入参安全校验

案例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值,相互比对两者.相同则代表没有被修改,不同则说明被修改过

入参安全校验

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

相关文章:

  • 2021-07-04
  • 2022-03-07
  • 2022-02-24
  • 2022-01-06
  • 2021-04-28
  • 2021-07-25
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-12
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2021-07-19
相关资源
相似解决方案