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 相关文章推荐
PHP 危险函数解释 分析
Apr 22 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
PHP遍历二维数组的代码
Apr 22 PHP
centos 5.6 升级php到5.3的方法
May 14 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
php操作路径的经典方法(必看篇)
Oct 04 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 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与SQL注入攻击[二]
2007/04/17 PHP
PHP实现时间轴函数代码
2011/10/08 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
PHP 使用memcached简单示例分享
2015/03/05 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
javascript写的异步加载js文件函数(支持数组传参)
2014/06/07 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
python生成验证码图片代码分享
2016/01/28 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
python实现自动打卡的示例代码
2020/10/10 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
中文系师范生自荐信
2013/10/01 职场文书
农业项目建议书
2014/08/25 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP