PHP 直接输出 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 参数可以被伪造)
声明:本文为原创文章,版权归主机之家测评所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ guzzle 提示:cURL error 60: SSL certificate problem: unable to get local issuer certificate 错误的解决办法07/07
- ♥ js 判断 undefined 类型无效的解决办法10/24
- ♥ 【疯狂猜成语/图猜成语】一个虚线的禾字旁一个公字是什么成语?08/22
- ♥ $(document).ready()方法和 window.onload 方法的区别08/26
- ♥ 【疯狂猜成语/图猜成语】一根棍子打草旁边一条蛇是什么成语?08/16
- ♥ 【疯狂猜成语/图猜成语】一个穿着绿衣服的人伸着手指很高兴的在说话是什么成语?08/20