明辉站/杀毒教程/内容

XSS攻击原理弊端与及防范方案

杀毒教程2023-03-30 阅读
[摘要]学习XSS之前, 我们很有必要知道XSS到底是什么东西。 其英文名是(Cross Site Scripting), 意思就是跨站脚本攻击, 是黑客常用的攻击手段之一, 因为与层叠样式表CSS(Cascading Style Sheets)同名, 为了避免混淆, 故将其命名为XSS。 好了, 现...

XSS攻击原理弊端与及防止方案


学习XSS之前, 我们很有必要知道XSS到底是什么东西。 其英文名是(Cross Site Scripting), 意思就是跨站脚本攻击, 是黑客常用的攻击手段之一, 因为与层叠样式表CSS(Cascading Style Sheets)同名, 为了避免混淆, 故将其命名为XSS。 好了, 现在知道了它的名字的由来之后, 最重要的就是去了解XSS的实现原理。


XSS实现原理

因为浏览器本身的设计缺陷, 浏览器只负责解释执行html+css+javascript代码, 并不会检验其安全性。 故如果你的服务器对没有对XSS漏洞准备安全的预防措施, 都会存在XSS漏洞。 下面具体讲一下XSS的攻击过程:

1.用户登陆web应用程序上的网页;.该网页已经被攻击者利用各种手段注入了javascript等脚本代码;
2.服务器对用户的浏览请求做出反应, 用户获取攻击者注入过代码的URL;
3.攻击者的javascript代码在浏览者的浏览器上打开;此时可能会伴随用户浏览器向攻击者发送会话令牌, 然后攻击者劫持用户会话等现象的发生。
在接触了几天XSS之后, 大致有以下特点:
1.XSS即是web应用程序上的计算机安全漏洞, 也是黑客常用的攻击手段;对于攻击者而言, 需要有很好的计算机语言基础, 如JavaScript, HTML5, Ajax, Css和其他脚本语言。
2.XSS产生的主要原因是web浏览器对用户的输入过滤不足。
3.通过将代码注入到网页, 虽然对Web服务器没有直接伤害, 但它借助网络传播, 其危害最终会反馈到服务器。
4.XSS漏洞如此普遍主要是因为web浏览器本身的设计是不安全的, 开发人员在交互过程中的设计阶段忽略了XSS防护, 加上大部分人还没认识到XSS的危害和错误的认为XSS就只会在浏览器上弹出一个窗口而已, 加上触发跨站脚本的方式简单且众多和web2.0的流行和社交功能的迅猛发展, 奠定了XSS发展的基础。
5.XSS最重要也是最核心的是利用自己构造好的XSS语句, 欺骗web应用程序上的过滤器, 实现绕过其安全检测, 达成向网页中注入javaScript等脚本信息的目的, 从而导致XSS漏洞在互联网上传播。
6.要善于利用工具提高效率, 要学会利用各种编码方式提高XSS的攻击性和隐蔽性。 例如, unicode, escapes, URL编码, 十六进制, 八进制等, 同时对于特定情境下也可以利用脚本加密技术实现XSS攻击。
7.有时候配合CSRF漏洞, 将会由意想不到的效果


同时XSS攻击也有一下弊端

1.XSS攻击无对应软件完成自动化攻击, 且有一定几率不成功;
2.是一种被动的攻击手段, 对website有http-only, crossdomiar。
下面几个概念需要理解好
1.shellcode——起初是溢出程序和蠕虫程序的核心, 注入目标网页中, 使用脚本编写好的代码;
2.Exploit——完整编写好的漏洞利用工具;
3.POC(Proof of Concept)——一段证明漏洞存在的程序代码片段;
4.payload——意思为有效载荷, 概念验证, 即是漏洞验证脚本;是组成Poc和Exp的必要组成部分。

XSS的分类

一.持久型的XSS
攻击方把恶意脚本代码固化在页面中, 当其他用户访问到此页面的时候, 浏览器会解析并且执行该脚本代码, 进而对其他用户进行XSS攻击。 最典型的例子是留言板。

二.非持久性(反射型)的XSS
攻击方通过改写网页访问的URL, 使其指向攻击方已经准备好的脚本代码。 典型的例子是, 搜索栏中输入脚本代码。 欺骗用户自己去点击链接才能触发XSS代码。

三.DOM型的XSS
攻击方利用javascript来展开攻击, 用户请求一个由攻击方提供的经过专门设计的URL, 包括嵌入式的javascript, 服务器响应用户请求的时候不对URL进行处理, 当用户浏览这个相应的时候, 脚本得以触发。


如何防止XSS跨站脚本攻击:

原则:不相信用户输入的数据

将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了
只允许用户输入我们期望的数据。 例如:年龄的textbox中, 只允许用户输入数字, 而数字之外的字符都过滤掉

对数据进行Html Encode 处理。 < 转化为 <、> 转化为 >、& 转化为 &
、' 转化为 '、" 转化为 "、空格 转化为  
1
2
过滤或移除特殊的Html标签。 例如:<script>、<iframe>、<
for <、> for >、" for
过滤JavaScript 事件的标签。
例如 “onclick=”、”onfocus” 等等
1
2
3
4
很多浏览器都加入了安全机制来过滤XSS

另外:
如何防止SQL注入:

永远不要信任用户的输入。 对用户的输入进行校验, 可以通过正则表达式, 或限制长度;对单引号和双”-“进行转换等。
永远不要使用动态拼装sql, 可以使用参数化的sql或者直接使用存储过程进行数据查询存取
永远不要使用管理员权限的数据库连接, 为每个应用使用单独的权限有限的数据库连接
不要把机密信息直接存放, 加密或者hash掉密码和敏感的信息
应用的异常信息应该给出尽可能少的提示, 最好使用自定义的错误信息对原始错误信息进行包装


上面是电脑上网安全的一些基础常识,学习了安全知识,几乎可以让你免费电脑中毒的烦扰。

……

相关阅读