XSS攻击与防范

1.什么是XSS攻击

XSS攻击,跨站脚本攻击

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为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攻击内容:

时间: 2024-10-13 22:34:34

XSS攻击与防范的相关文章

XSS研究2-来自内部的XSS攻击的防范

引入: 前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击.   实践:  http://www.cnblogs.com/crazylqy/p/4146740.html 文章中可以看出,主要的攻击手段无外乎是发送了一段恶意脚本到受害者机器上去运行,所以我们的思路就是,如何让这段脚本失效.   因为脚本的组成部分是<script>和</script>,而这其中最主要的是大于号和小于号字符,所以我们只要在请求中,把 大

简述XSS攻击及其防范措施

▍XSS 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的. ▍通俗来说 通俗点说,就是通过在css或者html里嵌入一些恶意的Javascript代码,从而实现恶意攻击的目的. 那么这些Javascript代码又是如何嵌入进去的

xss攻击和sql注入防范

php xss攻击防范 如果类似商品标题之类的,可以使用 strip_tags() 过滤,全部清除掉html标签. 如果类似商品描述之类的,可以使用 htmlspecialchars() 过滤,把html标签转义. sql注入防范 数字类型参数,可以使用 (int)/intval() 强制转为整形. 字符串类型参数,可以使用 mysql_real_escape_string() 转义特殊字符. java xss攻击防范 输入时处理,使用 StringEscapeUtils.escapeHtml4

XSS 防范XSS 攻击的措施

首先看看跨站脚本漏洞的成因,所谓跨站脚本漏洞其实就是Html的注入问题,恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码,数据流程如下: 恶意用户的Html输入————>web程序————>进入数据库————>web程序————>用户浏览器 这里给出一些防范XSS 攻击的措施.必须说明的是,对于XSS 攻击,并不像SQL Injection 那样可以有一劳永逸的解决方案——只需要grep 一下所有的sql

web安全之XSS攻击原理及防范

阅读目录 一:什么是XSS攻击? 二:反射型XSS 三:存储型XSS 四:DOM-based型XSS 五:SQL注入 六:XSS如何防范? 1. cookie安全策略 2. X-XSS-Protection设置 3. XSS防御HTML编码 4. XSS 防御HTML Attribute编码 5. XSS防御之javascript编码 6. XSS 防御之 URL 编码 7. XSS 防御之 CSS 编码 8. 开启CSP网页安全政策防止XSS攻击 回到顶部 一:什么是XSS攻击? XSS 即(

[Javascript]在javascript端防范XSS攻击

在任何被扫描出来有XSS风险的对象,代入类似下列语法,把恶意的字符串去除掉: 这边的情况是a.text会接收到网页上来自使用者的输入的任何文字,怕a.text里面会有恶意的javascript a.text = a.text.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''').replace(///g, '/'); 参考数据: XSS prevention and .

PHP 防范xss攻击

XSS 全称为 Cross Site Scripting,用户在表单中有意或无意输入一些恶意字符,从而破坏页面的表现! 看看常见的恶意字符XSS 输入: 1.XSS 输入通常包含 JavaScript 脚本,如弹出恶意警告框:<script>alert("XSS");</script> 2.XSS 输入也可能是 HTML 代码段,譬如: (1).网页不停地刷新 <meta http-equiv="refresh" content=&qu

PHP 防范xss攻击(转载)

XSS 全称为 Cross Site Scripting,用户在表单中有意或无意输入一些恶意字符,从而破坏页面的表现! 看看常见的恶意字符XSS 输入: 1.XSS 输入通常包含 JavaScript 脚本,如弹出恶意警告框:<script>alert("XSS");</script> 2.XSS 输入也可能是 HTML 代码段,譬如: (1).网页不停地刷新 <meta http-equiv="refresh" content=&qu

xss攻击问题以及如何防范

当用户提交评论的时候,比如如下评论内容 111 <scripy>alert(111);</scripy> 这样当现实评论的时候会先弹出111弹框,再显示评论.这就是xss攻击. 所以,我们需要对评论内容进行检测,对恶意代码进行删除,不让不存到数据库. 如下解决方案: def add_article(request): if request.method=="POST": title=request.POST.get('title') article_conten