昨天刚好简单认识了CSRF(链接在这里,欢迎拜访),今天刚好趁热打铁,再次重温下XSS,话不多说,现在开始。
XSS简介
XSS攻击通常指的是攻击者通过利用网页开发时留下的漏洞,往Web页面里插入恶意Script代码,当用户浏览时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的.
简单举个例子:
一个网站有个评论输入框,评论的时候如果评论了JavaScript代码,比如<script>alert('我是攻击者的代码')</script>
,如果没有做xss的过滤,则这段代码会被插入到html里面并执行,最终会弹出 '我是攻击者的代码'。
下面这段代码可以模拟XSS:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function testCode() {
const script = document.createElement('script')
script.innerHTML = 'alert("我是攻击者的代码")'
document.body.appendChild(script)
}
testCode()
</script>
</body>
</html>
XSS危害
攻击者可以通过恶意注入的js代码,做很多伤害用户的事情,比如:
- 窃取用户的cookie,模拟用户登录,然后进行操作
- 添加监听,监听用户的输入;
- 伪造表单,欺骗用户登录,获取用户密码;
- 生成垃圾广告
- 等等
XSS分类
反射型XSS(经过服务端,不存储在数据库)
例子:用户访问一个带有XSS代码的URL请求时, 比如http://127.0.0.1:8080?test=<script>alert("XSS攻击")</script>
,服务器端接收数据后,然后又把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞
存储型XSS(经过服务端,存储在数据库)
嵌入到web页面的恶意HTML会被存储到服务端,简而言之就是会被存储到数据库,等用户在打开页面时,会继续执行恶意代码,能够持续的攻击用户
例子:博客评论,用户评论,留言板,聊天室等用户可以输入的地方
如何预防
-
对输入内容进行特殊字符转义,比如
&, <, >,",'
,或者使用encodeURIComponent
函数进行转义 -
cookie开启 HttpOnly,让攻击者获取不到cookie
-
配置
CSP
(Content Security Policy), 也就是内容安全策略,通过配置CSP
去设置浏览器只能允许哪些外部资源可以加载和执行
总结:
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!