php 防护xss,PHP的防御XSS注入的终极解决方案


Posted in PHP onApril 01, 2021

PHP的防御XSS注入的终极解决方案【信息安全】【Hack】

一: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参数可以被伪造)

更多PHP相关知识,请访问PHP教程!

PHP 相关文章推荐
一个用于MySQL的PHP XML类
Oct 09 PHP
PHP动态变静态原理
Nov 25 PHP
php导出CSV抽象类实例
Sep 24 PHP
使用PHP如何实现高效安全的ftp服务器(二)
Dec 30 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
WordPress多语言翻译插件 - WPML使用教程
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
微信小程序和php的登录实现
Apr 01 #PHP
PHP新手指南
PHP命令行与定时任务
Apr 01 #PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 #PHP
如何判断微信付款码和支付宝付款码
Apr 01 #PHP
You might like
PHP 数组入门教程小结
2009/05/20 PHP
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
js玩一玩WSH吧
2007/02/23 Javascript
Jquery 获得服务器控件值的方法小结
2010/05/11 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
javascript输出AscII码扩展集中的字符方法
2016/12/26 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
python网络编程示例(客户端与服务端)
2014/04/24 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
基于Python开发chrome插件的方法分析
2018/07/07 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
python RSA加密的示例
2020/12/09 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
HTML5 在canvas中绘制文本附效果图
2014/06/23 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
设计专业毕业生求职信
2014/06/25 职场文书
大学生党员自我剖析材料
2014/10/06 职场文书