博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XSS攻击与防范
阅读量:6160 次
发布时间:2019-06-21

本文共 1623 字,大约阅读时间需要 5 分钟。

1.什么是XSS攻击

XSS攻击,跨站脚本攻击

(Cross Site Scripting),为不和(Cascading Style Sheets,)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

xss攻击,就是给form表单的项目里边填写一些html、css、js等脚本代码,这些代码就会被收集到数据库里边,当对应的内容展示的时候,这些脚本代码,就会执行,造成攻击效果

一般收集form表单信息,要做“表单验证”工作,而该工作可以完全杜绝xss产生。

理想情况下:每个form表单都实现表单验证工作

现实情况是:只有少量form表单适合做验证,其他大量form表单不适合做验证

为什么呢,form表单做验证会影响用户使用体验,另一个会增加程序员开发、维护程序的难度

xss攻击效果:

 

首先,在GoodsController.class.php控制器里边要收集$_POST原生数据信息:

添加商品,进行xss攻击

 

后期每次查看商品列表,都会有xss攻击效果:

 

2.防范XSS攻击

2.1 普通表单域

① 在普通的form表单中 通过htmlspecialchars()函数收集处理数据

② 在tp框架的form表单中 通过I()函数或create()方法收集处理数据

它们的关系如下:

create()—>>—I()—>>—htmlspecialchars()

以上函数会把脚本攻击内容中的<>箭头符号都变为符号实体,进而杜绝xss攻击

2.2 富文本编辑器

1) 在编辑器中正常写入xss攻击内容

ueditor本身并没有那么笨,其会防止xss攻击的,因此无需多虑

 

 

攻击失败,效果如下:

 

通过变形方式设置攻击

形成攻击步骤:

① 正常设置富文本编辑器内容

② 点击“HTML源代码标签”

③ 在 源代码 框里边设置xss攻击内容

④ 再点击 “HTML源代码标签”切换回正常的状态

之后信息保存会形成攻击

 
 

富文本编辑器xss攻击防范处理手段:

① 把“HTML源代码”标签给去除[不推荐]

② htmlpurifier防止xss攻击

 

2.3 htmlpurifier防范xss攻击

htmlpurifier是在htmlspeciachars()不能使用情况下的另一个解决方案

该htmlpurifier可以限制被处理的内容中是否可以出现某些脚本(html标签、css、js)内容或不出现某些脚本

htmlpurifier会把xss攻击的非法内容直接删除

htmlspeciachars则是把脚本标签的”<>箭头符号”变为符号实体

① 引入功能包到项目中

解压关键的功能包目录出来

 
 

② 形成过滤函数

系统函数库文件:

ThinkPHP/Common/functions.php 系统函数库文件

Application/Common/Common/function.php 项目函数库文件(所有分组都可以使用)

Application/分组(Home或Admin)/Common/function.php 项目中具体某个分组的函数库文件

tp框架中,一个php文件需要引入另一个php文件

我们通常设置相对路径引入文件,在任何一个php文件里边引入其他php文件都是相对入口文件index.php设置的

在Application/Common/Common/function.php文件中制作htmlpurifier过滤函数:

 

③ xss攻击的防范效果

在控制器中对收集的信息实现htmlpurifier处理:

 

htmlpurifier防止xss攻击效果:

 

数据库收集的信息没有看到xss攻击内容:

 

转载于:https://www.cnblogs.com/insomniazz/p/6666330.html

你可能感兴趣的文章
10 个非常有用的 AngularJS 框架
查看>>
简析IP视频监控图像处理芯片介绍及应用
查看>>
C#获取IP和整数IP方法
查看>>
springmvc + excel代
查看>>
南阳OJ 16 矩形嵌套
查看>>
Swift - 19 - 字典的初始化
查看>>
分析app和wap手机网站的不同
查看>>
终端命令别名
查看>>
io cache
查看>>
AchartEngine绘图引擎
查看>>
(笔记)Mysql命令create table:创建数据表
查看>>
IOS-多线程
查看>>
手把手教你如何把本地文件传到服务器,如何映射
查看>>
Spring Session Redis
查看>>
Android Studio IDE Out of Memory
查看>>
EF框架step by step(1)—Database-First
查看>>
算法笔记之高速排序
查看>>
使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
查看>>
一个网络传输框架——zeroMQ 调研笔记
查看>>
HDU ACM 1046 Gridland 找规律
查看>>