《网络安全学习》 XSS攻击
2019-01-01 20:40
155 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tomatocc/article/details/85559323
XSS的常见攻击方式:
- 反射型
- 存储型
第一种:反射型XSS攻击
发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。
模拟反射型XSS攻击:
通过构建Node应用,演示反射型XSS攻击。后台框架位jfinal,页面渲染也是jfinal,其他框架的话只需要修改方式即可,原理一样。
前端页面代码
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>XSS脚本攻击演示</title> <body> <hr> 浏览器的参数值是: <p>#(xss)</p> </body> </html>
后台Controller代码
package com.demo.web; import com.demo.model.User; import com.jfinal.core.Controller; public class IndexController extends Controller { public void index() { // 获得连接参数xss ,并渲染到前台 String attr = getPara("xss"); setAttr("xss", attr); render("index.html"); } }
然后我们访问我们的项目,加上xss的参数,机会得到如下效果。
接下来,我们将xss的值改为具有攻击性的脚本:
xss=<img src="null" "alert(1)"/>
然后我们访问这个地址,就会出现下图,会弹出对话框。
http://127.0.0.1:8080/tomatocc/?xss=<img src="null" "alert(1)"/>
如果没有弹出对话框,而是下面的报错,那是因为现在的浏览器已经将这种低级的xss攻击加入到的自身防护中,不过ie浏览器还没有,因此本人用的是ie浏览器进行操作。
我们可以看到,这种方式的攻击前提是,必须将地址中的参数在页面解析,如果不进行解析的话,那么这种攻击方式也就毫无意义。
而这种攻击方式下,又包含三种方式
- 主动攻击:上述的加img标签就是主动攻击。
- 引诱攻击:如果参数值为:
<p onclick="alert('点我了')">点我</p>
,这种引诱用户去点击的攻击,则为引诱攻击。
3.iframe方式:如果参数值为:
<iframe src="//baidu.com/t.html"></iframe>,那么将会直接将某个网站渲染到该页面。
第二种:存储型XSS攻击
存储型XSS和反射型XSS的差别仅在于,
提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用在提交XSS代码。
由于这种方式和上述方式的差别仅仅在于数据存储,前端代码无需任何变更,后端在获取连接值后,进行存储数据库,然后在去渲染,因此不做代码演示。
XSS的防御措施:
上面掌握了XSS的攻击方式,下面就来学习防御措施。
- 编码
- 过滤
- 校正
编码
对用户输入的数据进行HTML Entity编码
过滤
移除用户上传的DOM属性,如onerror等
移除用户上传的Style节点、Script节点、Ifram节点等。
校正
避免直接对HMTL Entity解码
使用DOM Parse转换,校正不匹配对的DOM标签
未完,待续
相关文章推荐
- 无处不在的xss攻击
- 专题研究第三期:XSS攻击——跨站(第二篇)
- MPAA组织遭遇尴尬 网页存在XSS攻击漏洞
- XSS攻击方法
- XSS攻击
- 一次XSS攻击过程
- php过滤XSS攻击的函数
- Xss攻击原理及防止办法简介
- cookie的httponly的设置(可简单仿XSS攻击)
- 来自内部的XSS攻击的防范
- XSS攻击的防范
- XSS攻击及防御链接整理
- 什么XSS攻击?PHP防止XSS攻击函数
- XSS攻击及防御
- web开发常见安全问题(SQL注入、XSS攻击、CSRF攻击)
- 使用AngularJS中的SCE来防止XSS攻击的方法
- 使用Jsoup消除不受信任的HTML (来防止XSS攻击)
- web安全之Xss攻击和Sql注入
- XSS攻击(二)
- web安全-XSS攻击及防御