标签:blog http io os 使用 ar java strong for
1. 跨站脚本(XSS)
1.1 介绍
1.1.1 被动注入,利用输入html,javascript 等信息伪造链接,图片等使用提交信息,调转页面等
1.1.2 主动注入,黑客主动参与攻击,不会傻等倒霉的用户上钩
1.2 防御
1.2.1 HTML 编码
Html.Encode
1.2.2 HTML 属性编码
Html.AttributeEncode
1.2.3 url 编码
URL.Encode
1.2.4 java script 编码
Ajax.JavaScriptStringEncode
1.2.5 CSS 编码
1.3 使用AntiXSS的NuGet包
install-package AntiXSS
1.3.1 AntiXss使用的是白名单,而asp.net默认是黑名单,着用AntiXSS的安全性比ASP.NET 高
1.3.2 AntiXss注重安全漏洞, asp.net注重HTML页面的不被破坏
1.3.3 使用
@using Microsoft.Security.Application
@Encoder.JavaScriptEncode();
2.请求伪造(CSPF)
2.1 介绍
在网站上通过图片链接等伪造银行等机构的请求(混淆代理),例如现在很多银行用的get 请求,url 会在地址栏上显示,这就给了黑客机会,黑客可以通过任何吸引你的内容,让你点击,伪造相同的请求发给银行,正好你银行在登陆状态,就可以转账盗取金钱。
2.2 令牌验证
通过验证用户是否资源提交站点数据来达到防御目的,可以在Html隐藏元素来实现。
MVC 中
@Html.AntiForgeryToken(), 会输出一个加密值作为隐藏元素
在提交表单时,ActionFilter就会验证2个值是否匹配:
[ValidateAntiForgertToken]
public ActionResult Register(..)
2.3 幂等的get 请求
仅通过post 请求来修改数据或内容,就可有效的防御全部伪造攻击。
2.3 HttpReferrer 验证
ActionFilter 来阻止CSRF攻击:
然后再Register 上面添加自定义的过滤器
3.cookie盗窃
3.1 介绍
利用XSS获取用户cookie,用用户的Id登陆目标网站
3.2HttpOnly 阻止
web.config 里设置
<HttpCookies httpOnlyCookies="true" ...>
3.3单独设置httponly
Response.Cookies["MyCookie"].HttpOnly=true;
4.重复提交
4.1 介绍
MVC 尊顺命名约束把输入元素映射到模型属性中,恶意用户可以向查询字符串或提交的表单中添加其他属性(模型中存在,但用户没权操作的属性)来干预表单提交。甚至可以得到其他账户的权限。
4.2 使用bind 特性防御重复提交,下面展示的Product 模型只能映射name 和age 属性。无权操作其他的属性。
[Bind(Include="Name","Age")]
pulbic class Product{
......
}
4.3 使用UpdateModel 后TryUpdataModel 的重载本版接受bind 列表。
UpdateModel(product,"product",new string[] {"Name","Age"} ")
4.4 避免直接绑定试图
使用view model.
标签:blog http io os 使用 ar java strong for
原文地址:http://www.cnblogs.com/rrxc/p/4000127.html