学习web的第七天

本文介绍了PHP表单验证中如何使用htmlspecialchars()函数防止XSS攻击。$_SERVER['PHP_SELF']变量可能导致安全问题,通过添加htmlspecialchars()进行转义,特别是设置适当的flags参数,如ENT_QUOTES,以编码双引号和单引号,有效防止恶意脚本注入。
摘要由CSDN通过智能技术生成

PHP的表单验证
注:具体如何实现可以去菜鸟教程回看
在表单验证中了解到的一个信息安全问题:使用htmlspecialchars()函数防止在使用$_SERVER[“PHP_SELF”] 时被xss攻击
1, $_SERVER[“PHP_SELF”] 变量: $_SERVER[“PHP_SELF”] 是一种超全局变量,它返回当前执行脚本的文件名
$_SERVER[“PHP_SELF”] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
2,若页面使用了PHP_SELF,则用户可以通过输入下划线然后插入js代码执行跨站脚本(XSS)在这里插入图片描述
3,htmlspecialchars()函数:
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

预定义的字符是:

& (和号)成为 &
" (双引号)成为 "
’ (单引号)成为 ’
< (小于)成为 &lt;

> (大于)成为 &gt;
它的语法如下:
htmlspecialchars(string,flags,character-set,double_encode)

其中第二个参数flags需要重要注意,很多开发者就是因为没有注意到这个参数导致使用htmlspecialchars()函数过滤XSS时被绕过。因为flags参数对于引号的编码如下:
可用的引号类型:

ENT_COMPAT - 默认。仅编码双引号。
ENT_QUOTES - 编码双引号和单引号。
ENT_NOQUOTES - 不编码任何引号。
默认是只编码双引号的!默认只编码双引号!默认只编码双引号……重要的事情说三遍!!!
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值