xss
来源:互联网 发布:极限挑战私下关系知乎 编辑:程序博客网 时间:2024/06/16 17:50
xss攻击是什么
跨站脚本攻击(Cross-Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,所以将跨站脚本攻击缩写为XSS。
xss是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
危害
盗用cookie,获取敏感信息。
利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击者)用户的身份执行一些管理动作,或执行一些如:发微博、加好友、发私信等常规操作,前段时间新浪微博就遭遇过一次XSS。
利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果
原理
XSS漏洞的产生原因是Web应用未对用户提交请求的数据做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“>”、“<”),并将未经转义的恶意代码输出到第三方用户的浏览器解释执行。
分类
反射型XSS,主要做法是将脚本代码加入URL地址的请求参数里,请求参数进入程序后在页面直接输出,用户点击类似的恶意链接就可能受到攻击。这类攻击一般是一次性的,非持久化的
存储型XSS,主要出现在让用户输入数据,供其他浏览此页的用户进行查看的地方,包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。这个流程简单可以描述为:恶意用户的Html输入Web程序->进入数据库->Web程序->用户浏览器。这类攻击一般是持久化的,对应的危害性和危害面积也更大。
例子
1.反射型XSS
攻击者将如下链接发送给受害者:
代码:
http://www.XXXX.com/search.asp?input=<script>alert(document.cookie);</script>
当受害者点击这个链接的时候,注入的脚本被当作搜索的关键词发送到目标服务器的search.asp页面中,则在搜索结果的返回页面中,这段脚本将被当作搜索的关键词而嵌入。这样,当用户得到搜索结果页面后,这段脚本也得到了执行。这就是反射型XSS攻击的原理,可以看到,攻击者巧妙地通过反射型XSS的攻击方式,达到了在受害者的浏览器上执行脚本的目的。由于代码注入的是一个动态产生的页面而不是永久的页面,因此这种攻击方式只在点击链接的时候才产生作用,这也是它被称为非持久型XSS的原因。
2. 存储型XSS
恶意攻击者可以通过发一篇包含了恶意代码的帖子。
(帖子中包含了恶意代码,)
这时甲和乙看到了恶意攻击者的提子,当在查看帖子时就都中招了,他们的cookie信息都发送到了恶意攻击者的服务器上,攻击成功!
可以看到,存储型XSS的攻击方式能够将恶意代码永久地嵌入一个页面当中,所有访问这个页面的用户都将成为受害者。如果我们能够谨慎对待不明链接,那么反射型的XSS攻击将没有多大作为,而存储型XSS则不同,由于它注入的往往是一些我们所信任的页面,因此无论我们多么小心,都难免会受到攻击。
XSS防御
有矛就有盾
过滤输入
永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。
过滤输出
当需要将一个字符串输出到Web网页时,同时又不确定这个字符串中是否包括XSS特殊字符,为了确保输出内容的完整性和正确性,输出HTML属性时可以使用HTML转义编码(HTMLEncode)进行处理,输出到
<script> window.location.href=”http://www.baidu.com”;</script>
保存后最终存储的会是:
<script>window.location.href="http://www.baidu.com"</script>
在展现时浏览器会对这些字符转换成文本内容显示,而不是一段可执行的代码。
使用 HttpOnly Cookie
将重要的cookie标记为httponly,这样的话当浏览器向Web服务器发起请求的时就会带上cookie字段,但是在js脚本中却不能访问这个cookie,这样就避免了XSS攻击利用JavaScript的document.cookie获取cookie。
项目中的注意点
由于公司使用的是vue框架进行客户端开发,所以在使用vue的时候,要注意,在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。记住,只对可信内容使用 HTML 插值,永不用于用户提交的内容。
- XSS
- xss
- xss
- xss
- xss
- xss
- xss
- XSS
- XSS
- XSS
- xss
- xss
- XSS
- xss
- XSS
- xss
- xss
- xss
- java线程池
- Android7.0 PopupWindow的兼容问题
- centos7 firewall 防火墙 命令
- LinkedBlockingQueue的简单使用
- VGGNet笔记
- xss
- nginx配置location [=|~|~*|^~] /uri/ { … }用法
- JDK 的环境变量的配置
- C# winform窗口打开特效及窗口位置居中
- 在windows上安装Tomcat
- 树的先序,中序,后序遍历 | Python
- win10和vs2017搭建open gl 开发环境
- 生成mysql数据字典 (张高伟)
- Android获取mac地址方法,6.0以上也可用