快捷搜索:  as  as) ORDER BY 1#

【Asp.net安全架构】1、跨站脚本(Cross site script,

道理

跨站脚本(Cross site script,简称xss)是一种“HTML注入”,因为进击的脚本多半时刻是跨域的,以是称之为“跨域脚本”。

我们经常听到“注入”(Injection),如SQL注入,那么到底“注入”是什么?注入本色上便是把输入的数据变成可履行的法度榜样语句。SQL注入是如斯,XSS也如斯,只不过XSS一样平常注入的是恶意的脚本代码,这些脚本代码可以用来获取合法用户的数据,如Cookie信息。

其道理如下图所示:

XSS从进击道理上,分为三类:

1:反射型XSS

将用户输入“反射”回浏览器,即将用户的输入变成HTML传输回客户端。如:

Response.Write(“script>alert(/xss/);script>”)

便是一个范例的反射型XSS。

2:存储性XSS

存储性XSS本色上也是一种反射型XSS,然则它把进击脚本放置在办事器端,一旦被注入,可被多人多次使用。如,颁发博文,就可以引入存储性的XSS。

3:DOM BASED XSS

假如用户的输入被用于改动原有HTML的DOM内容,就会引入这一类进击。

最范例的是输入的内容用于作为某个节点的innerHTML,假如纰谬输入作验证,则会被注入进击代码。

如下的一段脚本注入后,就会获取用户的Cookie

script language=”javascript”>

var cockieInfo =window.cockie;//send cockieInfo to luminji

javascript>

实际案例

应用Fiddler,查看到某系统添加公共信息有一处Post,我们捏造如下的哀求:

POST xxx.com/AddPublicInfo HTTP/1.1

Accept: */* Accept-Language: zh-cn

Content-Type: application/json; charset=utf-8 Accept-Encoding: gzip, deflate

Host: 192.168.80.136 Content-Length: 187

Cookie: ASP.NET_SessionId=qk1qvprjrikp2peveg2ini45; LanguageKey=zh_cn; LoginId=dean;

{"type":"ExtBulletin","title":"1111asdf11","content":"22sdfs22script>alert(/xss/);script>","validPeriod":"1","beginDate":"","endDate":"","language":"None","linkFile":"0","fileName":""}

然后,刷新公共信息页面,发明注入代码成功。假如该站点同时存在会话挟制措施的破绽,则将注入脚本改称获取cookie,进击者就可以捏造随意率性造访了本信息的用户来登录系统。

经由过程该例子我们也可以看到,对付XSS的警备,所有的处置惩罚应该是在办事器真个,由于客户真个验证,如应用JS来验证输入是完全可以经由过程捏造哀求被绕过的。以是在安然架构方面对付JS脚本的定位为:JS仅用于改良用户体验。

应对策略

1. 在办事器段限定输进款式,输入类型,输入长度以及输入字符

要留意避免应用一些有潜在危险的html标签,这些标签很轻易嵌入一些恶意网页代码。如 等。

留意,不要仅仅在客户端应用js代码加以验证。由于客户真个js脚本可以被绕过。

2. 款式化输出。将输入的内容经由过程HttpUtility.HtmlEncode处置惩罚,这样就不能直接看出输出的内容。

3:对付asp.net站点,可以确保:

configuration>

system.web>pagesvalidateRequest="true"/>

system.web>configuration>

留意,默认环境下为true。

4:IE本身也有机制阻拦跨站脚本

存在跨站脚本要挟,假如应用的IE8,则这个哀求会被拦截,提示“Internet Explorer 已对此页面进行了改动,以赞助阻拦跨站脚本。单击此处,获取具体信息...”。

这个差错是因为 IE8 的跨站脚本(Cross-site scripting, XSS)防护阻拦了跨站发送的哀求。

以下是若何设置设置设备摆设摆设它:点击 IE8 的“对象”-“Internet 选项”,进入“安然”选项卡,打开“Internet”下方的“自定义级别”,在“安然设置”对话框中找到“启用 XSS 筛选器”,改为“禁用”即可。 留意,“启用”是默认设置设置设备摆设摆设。

当然,浏览器本身的这种机制是弗成靠的。

详细步伐

n查找所有code behind中的”.Text”

经由过程文件查找出所有的为文本赋值的代码行;

n为赋值Encode

对上一步骤查找出来的赋值,首先Encode。

n查找所有的WCF措施中返回字符串的

经由过程文件查找”.svc”,找到整个的WCF措施,筛选出返回string的措施

n处置惩罚字符串再返回

对上一步骤查找出来的返回的string,先找到序列化措施,然后对实体的可能被用于输出为html的属性,首先Encode

以上统计纳入到如下表格:

序号

您可能还会对下面的文章感兴趣: