SharePoint Security系列 之一 Cross-Site Scripting (XSS) Attack

本文详细阐述了Cross-Site Scripting (XSS) 攻击的原理,包括攻击过程、严重性及其对Web应用的潜在威胁,并提供了有效的防御措施,如限制输入、对输出进行编码等,特别强调了在ASP.NET和SharePoint 2010环境中实施这些策略的重要性。

什么是Cross-Site Scripting Attack?

===================

攻击者制造一个网站, 受害用户访问该网站后, 其浏览器客户端收到恶意的脚本代码. 受害用户的浏览器之后会运行该脚本代码. 由于浏览器是从一个trusted site下载的脚本, 从而浏览器不可能识别这个代码是否合法, 并且Microsoft IE Security Zone也不能提供保护. 这种攻击可以在HTTP和HTTPS的连接上进行.

cross-site scripting attack的最严重的例子之一就是当攻击者书写脚本来获得能够提供对某个站点访问权限的authentication cookie, 然后把这个cookie发送给攻击者知道的一个web地址. 这就使得攻击者可以伪装成合法用户的身份对站点进行非法访问.

 

使得你的web application易受到cross-site script攻击的弱点包括:

  • 对用户的输入没有限制和验证
  • 没有对输出进行encode
  • 对从一个共享数据库中获取的数据采取信任态度

 

应对之策

有两条重要的对策

1. 对输入进行限制(Constrain input).

2. 对输出进行Encode.

 

HTML encode会把对HTML有特殊含义的字符替换成HTML-to-HTML的代表这些特殊字符的变量. 比如说 < 被替换成&lt; 比如说 " 被替换成&quot;.

Encod了的数据不会引发浏览器执行代码, 取而代之的是仅仅把这些字符作为无害的HTML来显示.

 

对于更多如何在普通的asp.net应用程序中应对这种攻击, 请看这里(How To: Prevent Cross-Site Scripting in ASP.NET).

 

SharePoint 2010

===================

对SharePoint 2010而言, SharePoint本身是对这种攻击已经有防御措施, 对于开发者而言, 有如下的一些要点需要注意.

  • Encode Output Properly Using SPHttpUtility Methods
  • Never Allow Contributor Users to Add Script to the Site
  • Always Set a Charset in the Content-Type HTTP Response Header
  • Do Not Allow User Provided Values in Style and Event Attributes

 

更多细节, 请参考Security Best Practices for Developers in SharePoint 2010中针对Cross-Site Scripting的部分.

 

参考资料

Security Best Practices for Developers in SharePoint 2010

http://msdn.microsoft.com/en-us/library/gg552614.aspx 

How To: Prevent Cross-Site Scripting in ASP.NET

http://msdn.microsoft.com/en-us/library/ff649310.aspx

### 关于 Pikachu 项目中的 XSS 漏洞 #### 跨站脚本攻击(XSS) 跨站脚本攻击是一种常见的安全漏洞,允许攻击者通过注入恶意脚本来执行未经授权的操作。这种攻击通常发生在 Web 应用程序未能正确验证或转义用户输入的情况下。 在 Pikachu 项目的上下文中,存在多个演示场景来展示 XSS 的工作原理及其潜在危害[^1]。 #### 登录页面的 XSS 风险 受害者可以通过访问 `http://127.0.0.1/pikachu/vul/xss/xsspost/post_login.php` 页面并使用默认凭证 (`test/abc123`) 进行登录操作。此页面可能未对用户的输入进行充分过滤,从而导致反射型或存储型 XSS 攻击的发生。 #### 利用图片标签触发 XSS 另一个典型的例子涉及 `<img>` 标签的滥用。例如,在某些情况下,可以利用如下 HTML 片段发起请求到指定服务器以窃取会话信息或其他敏感数据: ```html <img src="http://127.0.0.1/pikachu/pkxss/xfish/fish.php" /> ``` 上述代码片段展示了如何通过图像加载机制实现远程通信的目的[^2]。 #### 大小写绕过的技巧 为了测试应用程序的安全防护措施是否存在缺陷,研究者们经常尝试不同的方法规避检测规则。比如下面这个案例就说明了即使简单的字符转换也可能突破初步防御屏障: ```html <SCRIPT>alert(/xss/)</sCRIpt> ``` 这里故意改变了部分字母的大写形式试图迷惑模式匹配算法达到成功弹窗的效果[^3]。 #### 嵌套 script 标记造成破坏 更进一步地考虑实际应用环境下的复杂情况,则有这样一种构造方式能够有效避开一些基础级别的HTML净化处理逻辑: ```html </script><script> alert('xss')</script> ``` 它巧妙地关闭当前正在解析状态中的 JavaScript 区域然后再开启新的定义区域以便执行自定义命令序列[^4]。 ### 结论 综上所述,Pikachu 提供了一个很好的平台让我们深入理解各种类型的Web安全性议题,特别是针对像XSS这样的经典威胁进行了详尽的实际演练.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值