ASP.NET MVC 网站安全性

应用程序的构建基于这样一个假设, 即只有特定用户才能执行某些操作,而其他 用户则不能执行这些操作。 开发人员希望的应用程序使用方式和黑客的使用方式之间有一条不可逾越的鸿沟。

XSS 跨站脚本攻击

HTML 与 Javascript 注入

防御策略:

  1. HTML 编码 @Html.Encode
  2. Javascript 编码 @Ajax.JavaScriptStringEncode
  3. 使用 AntiXss 库

CSRF 跨站请求伪造

被害人在浏览器中登录受信站点 A,验证通过并在浏览器产生 Cookie,在未退出站点的情况下打开风险网站 B,风险网站 B 向受信站点 A 发起请求,由于浏览器会自动附加 Cookie,所以请求会按被害人的权限进行处理。

CSRF 示例:
以下演示对政务 BingHandTree 接口(POST类型,包含身份验证)进行请求,使用注释部分代码即可在页面加载时提交,使被害人无法察觉:

<html>
<head>
    <script type="text/javascript">
        //function steal() {
        //    document.getElementById("steal").submit();
        //}
    </script>
</head>

<!--<body οnlοad="steal()">
    <form id="steal" method="POST" name="transfer" action="http://localhost/website/Case/BingHandTree" style="display:none">-->
<body>
    <form id="steal" method="POST" name="transfer" action="http://localhost/website/Case/BingHandTree">
        流程编号(PID):<input type="text" name="PID" value="11523" /><br />
        移交方向(HandDirect):<input type="text" name="HandDirect" value="1" /><br />
        回退节点(RebackAID):<input type="text" name="RebackAID" value="-1" /><br />
        显示用户(ShowUser):<input type="text" name="ShowUser" value="0" /><br />
        <input type="submit" value="确定" />
    </form>
</body>
</html>

防御策略:

  1. 验证来源地址 Request.UrlReferrer
  2. 防伪令牌 @Html.AntiForgeryToken()

Cookie 盗窃

利用 XSS 漏洞盗取 Cookie。

防御策略:

  • 禁止 Javascript 操作 Cookie Response.Cookies[“Sample”].HttpOnly = true;

重复攻击

后台接口接收一个对象时,向提交参数中加入这个对象类型包含的属性,来提交额外的参数。

防御策略:

  1. 使用模型绑定 BindAttribute
  2. 自定义视图模型

开放重定向

利用登录重定向的原理,通过诱导被害人点击包含危险地址的重定向链接,使用户通过登录认证后进入危险网站。

防御策略:

  • 验证重定向链接 Url.IsLocalUrl(returnUrl)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值