XSS跨站脚本攻击
XSS(cross site script),跨站脚本攻击,也成为CSS,是web程序中常见的漏洞。与SQL注入类似,SQL注入是通过SQL语句作为用户的输入,达到查询/删除数据库中数据的目的。而在XSS中,是通过网页中插入恶意脚本,且当用户浏览网页时,脚本就会成功地在用户的浏览器上执行,从而达到攻击者的目的。一次成功的XSS攻击,可以获取到用户的cookie,导航到恶意网站;可以获取用户联系人列表,向联系人发送虚假的诈骗信息;也可以删除用户日志等。XSS还可以与其他攻击同时实施,达到更大的破坏。
XSS攻击类型
分为两种:DOM based XSS攻击和Stored XSS攻击。
DOM based XSS攻击
顾名思义,DOM based XSS攻击是一种基于网页DOM结构的攻击。也有程序员称之为非持久性xss攻击,这种攻击影响范围小,仅对当次的网页访问产生影响。
Stored XSS攻击
这种类型的攻击,会影响范围大,而且可能是web服务器自身安全的漏洞。攻击者将攻击脚本上传至web服务器或者数据库上,是的所有访问该页面的用户都面临信息泄露的可能。
XSS漏洞修复
我们在测试过程中,信奉的原则就是:不相信开发写的代码。在对待安全问题时,我们的原则就是不相信所有的用户都是正常用户,不相信用户输入的数据。
对待xss攻击,攻击的代码不一定在<script></script>中。
1、将重要的cookie信息标记为http only ,这样的话,JavaScript中的document.cookie语句就不能获取到cookie
2、只允许用户输入我们期望的数据,在输入时就进行限制。 如:年龄的输入框中,只允许用户输入数字。 而数字之外的字符都过滤掉。
3、对数据进行Html Encode 处理
4、过滤或移除特殊的Html标签, 例如: <script>, <iframe> , < for <, > for >, " for
5、过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等
6、尽量使用post提交表单,而不是get。post的操作不可能绕开JavaScript的使用,这会给攻击者增加难度,减少可利用的跨站漏洞
HTML Encode
我们对用户输入的数据进行HTML encode 处理,将中括号,单引号,引号这类特殊字符进行编码
HTML characters | HTML Encoded Entities |
ss-than character (<) | < |
greater-than character (>) | > |
ampersand character (&) | & |
double-quote character (") | " |
space character( ) | |
Any ASCII code character whose code is greater-than or equal to 0x80 |
&#<number>, where <number> is the ASCII character value. |
比如用户输入:
<script>window.location.href=”http://www.baidu.com”;</script>,保存后最终存储的会是:
<script>window.location.href="http://www.baidu.com"</script>
在展现时浏览器会对这些字符转换成文本内容显示,而不是一段可执行的代码.
自己可以写一段代码进行转换,其实我们平时用的fiddler中是有快捷的转换方式
fiddle-Tools-TextWizard——输入需要转换的字符——选择HTML Encode 即可转换
部分内容摘自小坦克博主:http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤