分类目录

链接

2013年七月
« 6月   8月 »
1234567
891011121314
15161718192021
22232425262728
293031  

近期文章

热门标签

博主推荐

现在位置:    首页 > JS/JQUREY/CSS > 正文
使用ajax请求数据的安全性问题讨论
JS/JQUREY/CSS 暂无评论 阅读(880)

今日咱们来讨论一下ajax恳求的安全性,我信任各位在体系开发过程中肯定会费尽心机的想如何能够尽量少的避免假造ajax恳求进行进犯,尤其是开 发跟用户交互比较多的互联网体系。那么就请咱们来共享讨论一下你在开发过程中如何思考ajax安全及避免ajax恳求进犯的疑问。我也是一个新手,就先抛 砖引玉了,写的不对的当地期待批评指正。

我先上两段网摘:

Ajax安全防备的办法:

  1. 判别request的来源地址。这样的办法不引荐,由于黑客能够更改http包头,然后绕过检测。
  2. 选用验证码。也不引荐,请各位大大想一下用户的感触,刚输入用户名就让我输入注册码?这样Ajax含义安在?
  3. 给一个IP在一个小时内,分配一些比例,比方500个(思考到网吧等等多台机器一个IP,运用NAT的当地)。

Ajax 安全性经验规律:

  1. 若是你运用身份验证, 断定你在恳求页上检查!
  2. 为 SQL 写入检查。
  3. 为 JavaScript 写入检查。
  4. 保存商务逻辑在服务器上!
  5. 不要假定每个恳求是真实的!
  6. 承认检查数据!
  7. 检查恳求的数据并且断定它是正确的。

目前为止我做的最多的避免ajax恳求进犯的即是增加验证码增加随机Token约束同一恳求在规则时间内的最大恳求数量服务器端校验数据正确性、尽量运用POST办法

下面我写一个在ajax恳求的http头中增加一个随机Token来增加ajax恳求的安全性。

1、运用  $.ajaxSetup和setRequestHeader办法为一切的ajax恳求的Http头增加一个随机Token值

$.ajaxSetup({
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("token", "token随机值");
                }
            });

 

这段js代码能够放在母板页中,token值跟着页面的加载生成并放在session中,这样页面中的其他ajax进行恳求时就会在Http头中添 加token:XXXXXXX的键值对。咱们就能够在后台获取该token值并与session中的值比照,持平则为合法的恳求。

2、Token生成。

仿制代码
 string Token = new Random().NextDouble().ToString();
            Session["token"] = Token;
            System.Web.UI.HtmlControls.HtmlGenericControl script = new System.Web.UI.HtmlControls.HtmlGenericControl("script");
            script.Attributes.Add("type", "text/javascript");
            script.InnerHtml = @" $.ajaxSetup({
                beforeSend: function (xhr) {
                    xhr.setRequestHeader(""token"", """ + Token + @""");
                }
            }); ";
            Page.Header.Controls.Add(script);
仿制代码

 

3、新建DataService.ashx

仿制代码
public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain"; string Token = context.Request.Headers["token"]; if (string.IsNullOrWhiteSpace(Token) || context.Session["token"] == null)
            {
                context.Response.Write("恳求不合法");
            } else if (Token != context.Session["token"].ToString())
            {
                context.Response.Write("恳求不合法");
            } else {
                context.Response.Write("恳求合法§");
            }
        }
仿制代码

4、测验Ajax恳求

$.post("DataService.ashx", function (json) {

                alert(json);

            });

翻开FireBug检查恳求,发现多了一个token的值

 

若是你有啥好的能确保ajax恳求安全的办法,期待谈论。

即便没有读者,也要写博客。

本文版权归数据库之家所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:使用ajax请求数据的安全性问题讨论 | 数据库之家