Dragon
主机之家测评主机之家测评  2019-08-21 20:43 主机之家测评 隐藏边栏 |   抢沙发  7 
文章评分 0 次,平均分 0.0

直接输出 html 的,可以采用以下的进行过滤:

1.htmlspecialchars 函数

2.htmlentities 函数

3.HTMLPurifier.auto.php 插件

4.RemoveXss 函数

PHP 输出到 JS 代码中,或者开发 Json API 的,则需要前端在 JS 中进行过滤:

1.尽量使用 innerText(IE)和 textContent(Firefox),也就是 jQuery 的 text()来输出文本内容

2.必须要用 innerHTML 等等,则需要做类似 php 的 htmlspecialchars 的过滤(参照@eechen 的答案)

其它的通用的补充性防御手段

1.在输出 html 时,加上 Content Security Policy 的 Http Header

(作用:可以防止页面被 XSS 攻击时,嵌入第三方的脚本等)

(缺陷:IE 或低版本的浏览器可能不支持)

2.在设置 Cookie 时,加上 HttpOnly 参数

(作用:可以防止页面被 XSS 攻击时,Cookie 信息被盗取,可兼容至 IE6)

(缺陷:网站本身的 JS 代码也无法操作 Cookie,而且作用有限,只能保证 Cookie 的安全)

3.在开发 API 时,检验请求的 Referer 参数

(作用:可以在一定程度上防止 CSRF 攻击)

(缺陷:IE 或低版本的浏览器中,Referer 参数可以被伪造)

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

发表评论

扫一扫二维码分享