您的位置:首页 > 理论基础 > 计算机网络

《网络安全学习》 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浏览器进行操作。

我们可以看到,这种方式的攻击前提是,必须将地址中的参数在页面解析,如果不进行解析的话,那么这种攻击方式也就毫无意义。

而这种攻击方式下,又包含三种方式

  1. 主动攻击:上述的加img标签就是主动攻击。
  2. 引诱攻击:如果参数值为:
    <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标签

未完,待续

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: