浅谈常见的Web攻防

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可以做到哪里事情 ?

  1. 窃取cookie
  2. 更改用户设置
  3. 下载恶意软件
  4. 更改内容
  5. 账户劫持

简单的说,我们可以通过XSS访问用户的个人信息以及身份信息

  当然,有些时候我们需要允许用户输入html,那么只要在我们的Action上打上ValidateInput(false)即可。

通过为属性打上AllowHtml属性,我们可以允许某一个属性包含html的值,这样我们就可以移除Action上的ValidateInput属性。通过Html.Raw 我们可以将html输出到客户端

      http://www.2cto.com/article/201310/252114.html

原文地址:https://www.cnblogs.com/gyjjyg/p/6831668.html