最近项目被第三方工具扫描出来有一个Http head xss cross scripting漏洞,为了修复这个,顺便研究了一下跨站脚本攻击的原理, 跨站脚本攻击基本上就是sql注入的html版, 核心内容就是把一段精心设计的脚本通过网页中的html漏洞由HTTP GET/POST传给服务器并执行. XSS主要有两种,一种是注入的链接需要骗人来点击,目的是劫持用户的cookie; 一种是该脚本已经通过此方法注入了DB,每次有人浏览正常的该网站链接都会执行该脚本,理论上java script能做的都可以做。
我这里有个简单示例,我的网页中由于需求需要判断客户端浏览器来启动对应版本的程序,所以JSP代码中有这一段:
<% String sz = request.getHeader("user-agent"); ... %> ... <script type="text/javascript"> var sz = "<%=sz%>"; ...(sz.indexOf('Firefox/') != -1 ...) //此处省略,主要是判断HTTP HEAD的信息,取客户浏览器。 </script>
这么一段简单的代码,就有漏洞。 我这里通过chrome正常获取的http head的头是这样的:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36
所以var sz ="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36"
但客户端可以通过修改HTTP HEAD中由浏览器响应的正常属性达到注入目的。通过分析页面源码,可以构造一个字符串 ";alert(document.cookie);"
最终页面代码就变成了:
<script type="text/javascript"> sz = "";alert(document.cookie);"" ... </script>
注入目的达成,如果有人点击了这个链接,可以进一步用脚本将用户的cookie发送给外网的其他服务器,劫持cookie。
解决的方法也比较简单,就是对用户传来的任何信息进行输入检查,如编码。 可以采用JDK的URLEncoder或apache commons的StringEscapeUtils 使script代码不能逃离我们限定的范围。我这里就是这样处理,将
request.getHeader("user-agent")
改成
URLEncoder.encode(request.getHeader("user-agent"))
最终就算html注入进来,结果也变成了:
sz = "%22%3Balert%28document.cookie%29%3B%22";
该脚本无法成为可执行脚本。
本文出自 “祝坤荣” 博客,请务必保留此出处
相关推荐
为了更直观地理解XSS攻击的过程,我们可以通过一个简单的示例来演示XSS的基本原理: - 创建一个HTML文件`index.html`,其中包含一个表单,用户可以在表单中输入自己的名字,并提交给服务器端的`xss.php`文件。 - `...
标题 "简单模拟XSS攻击.zip" 提到的主题是关于网络安全中的跨站脚本(XSS)攻击,这种攻击发生在Web应用程序中,攻击者通过注入恶意脚本,使用户在不知情的情况下执行。在这个示例中,它展示了如何利用前端用户输入...
### Spring MVC 处理 XSS 和 SQL 注入攻击的方法总结 #### 一、引言 在 Web 开发领域,特别是基于 Java 的应用开发中,Spring MVC 框架因其灵活高效的特点而被广泛采用。然而,随着互联网技术的发展,网络安全问题...
例如,在一个简单的示例中,网站可能会将用户提交的用户名显示在欢迎消息中。如果用户输入的是`<script>alert(/我的名字是张三/)</script>`,而不是他们的实际姓名,那么这段脚本将在浏览器中执行,而非单纯的显示为...
根据给定的内容,我们可以看到一个简单的网站示例(http://www.bz73.com:8080/testxss)。该网站允许用户修改`uservalue`,并且管理员可以通过特定的请求修改`adminvalue`。在这个例子中,存在潜在的XSS风险。 - **...
- **实例演示**:以下是一个简单的PHP示例,用于展示XSS攻击的过程。 - **前端页面**:提供一个表单让用户输入名字。 - **后端处理**:PHP脚本直接输出用户提交的名字,未做任何过滤处理。 ```php echo $_...
XSS攻击是Web应用安全领域的一个重要问题。通过对XSS攻击方法的深入了解,可以帮助开发者更好地识别和修复潜在的安全漏洞。本文介绍了XSS攻击的基本原理及三种常见攻击方式——偷盗Cookie、利用iframe/frame和...
**Yamanner蠕虫**:这是一个著名的XSS攻击案例,它利用了Yahoo Mail系统的一个漏洞,当用户在Web上查看邮件时,邮件内容中的JavaScript代码能够被执行。攻击者通过构造带有恶意脚本的邮件,一旦受害者打开这些邮件,...
</script>`,如果这个输入被原样显示在结果页上,那么所有访问这个页面的用户都会看到一个弹出的警告框,这就是一个简单的XSS攻击实例。 3. XSS危害: XSS攻击可能导致以下后果: - 数据泄露:攻击者可以窃取用户...
为了更好地理解XSS攻击的具体实施方法,下面通过一个简单的案例来展示反射型XSS攻击的过程: 假设攻击者构造了如下链接,并通过社交媒体或电子邮件诱骗受害者点击: \...
以上列举了多种XSS攻击手段及相应的示例代码,这些技术可以帮助我们了解XSS攻击的具体实现方式。对于开发人员而言,掌握这些攻击方法有助于提高网站的安全性,避免成为XSS攻击的目标。同时,对于安全研究人员来说,...
#### 三、XSS攻击的原因及原理 **主要原因**:过度信任客户端提交的数据。 **原理**:通常情况下,Web应用程序需要处理来自客户端的数据。如果应用程序没有充分验证这些数据的安全性,攻击者就可以通过插入恶意...
#### 三、XSS攻击示例 假设有一个用户可以在某个网站上发表评论的功能,如果开发者没有对用户输入的评论进行严格的过滤和转义处理,那么恶意用户可以通过以下方式发动XSS攻击: ```html <!-- 恶意用户的评论 --> ...
#### 示例:简单的XSS攻击 假设一个网站的留言板功能未经过滤,用户可以提交如下代码: ```html <script>alert('XSS Attack!'); ``` 当其他用户浏览此留言时,浏览器将执行这段JavaScript代码弹出警告框,这仅是最...
这只是一个简单的示例,实际上攻击者可以通过这种方式窃取用户的Cookie、修改网页内容等。 ### 三、XSS防御策略 针对XSS攻击,Web开发者可以采取以下几种防御措施: 1. **输入验证**:对所有用户提交的数据进行...
总结来说,《ckeditor上传图片完善版》是一个集成了图片和文件上传功能的CKEditor扩展,它通过与服务器的交互实现了文件的上传和管理,为用户提供了一个便捷的内容创作环境。在实际应用中,开发者可以根据具体需求...
textContent属性是Web开发中防止XSS攻击的一个简单而有效的工具。通过自动对特殊字符进行转义,它帮助开发者安全地处理用户输入,避免恶意脚本的执行。然而,为了全面防护XSS,开发者还需要采取多种措施,包括输入...
1. **实例分析**:以一个简单的例子(如http://app.data.qq.com/)为例,其中的`score`参数未做任何过滤,允许攻击者输入HTML标签。当输入包含`(1);>`这样的代码时,浏览器会执行`onerror`事件,弹出警告框。 2. **...
以下是一个简单的PHP示例,用于展示XSS攻击是如何发生的: ```php echo "欢迎".$_GET['name']; ?> ``` 如果用户通过URL传递了一个恶意参数`name=lake<script>alert(123456)</script>`,那么当页面加载时,用户的...