1、sql 注入
一般都会采用拼sql的方法,这样是不安全的,可以伪造,出现同一结果
解决方法:采用参数化的方式,或者就使用ORM等数据操作框架
2、CSRF跨站请求伪造
asp.net MVC中的解决方法:
1.针对form表单的请求攻击,使用AntiForgeryToken令牌
ASP.NET MVC 的HtmlHelper类为我们提供了一个防止CSRF的方法。在form表单中加入以下代码:
@Html.AntiForgeryToken()
官方文档解释为:生成一个隐藏的窗体字段(防伪标记),在提交窗体时将验证此字段。
但仅仅这一行代码还不能实现令牌的验证,还需要在相应的动作方法上添加特性:Controllers方法上
[ValidateAntiForgeryToken]
2.针对Ajax Post请求攻击,同样是使用Token
根据微软提供的防范方式,我们可以模仿一个类似的令牌,来验证。首先,在呈现需要请求Action的页面的时候,用一个Session保存Token:
Session["Token"] = "1234";
然后,在视图页面创建一个隐藏字段保存Token的值:
<input id="token" type="hidden" name="token" value="@Session["Token"].ToString()" />
在Ajax请求的时候将token的值放在Http的headers中:
var headers = {};
headers['__RequestAntiForgeryToken'] = $("#token").val();
$.ajax({
type: "POST",
headers: headers,
data: "id=" + id,
url: '@Url.Action("ActionName")',
success: function (data) {
alert("请求成功")
},
error: function (e) {
alert(e.responseText);
}
});
3、XSS跨站脚本攻击
在web领域,有几个比较常见的安全隐患,其中一个比较流行的就是跨站脚本攻击。一些恶意的用户通过一些手段让我们的站点加载一些恶意的脚本,那么如果其它用户访问到这些脚本就有可能成为受害者。除了脚本,包括active-x控件,甚至一些恶意的Html都可以成为XSS的武器。XSS可以做到哪里事情 ?
- 窃取cookie
- 更改用户设置
- 下载恶意软件
- 更改内容
- 账户劫持
简单的说,我们可以通过XSS访问用户的个人信息以及身份信息
当然,有些时候我们需要允许用户输入html,那么只要在我们的Action上打上ValidateInput(false)即可。
通过为属性打上AllowHtml属性,我们可以允许某一个属性包含html的值,这样我们就可以移除Action上的ValidateInput属性。通过Html.Raw 我们可以将html输出到客户端
http://www.2cto.com/article/201310/252114.html