使用ajax请求数据的安全性问题讨论
今日咱们来讨论一下ajax恳求的安全性,我信任各位在体系开发过程中肯定会费尽心机的想如何能够尽量少的避免假造ajax恳求进行进犯,尤其是开 发跟用户交互比较多的互联网体系。那么就请咱们来共享讨论一下你在开发过程中如何思考ajax安全及避免ajax恳求进犯的疑问。我也是一个新手,就先抛 砖引玉了,写的不对的当地期待批评指正。
我先上两段网摘:
Ajax安全防备的办法:
- 判别request的来源地址。这样的办法不引荐,由于黑客能够更改http包头,然后绕过检测。
- 选用验证码。也不引荐,请各位大大想一下用户的感触,刚输入用户名就让我输入注册码?这样Ajax含义安在?
- 给一个IP在一个小时内,分配一些比例,比方500个(思考到网吧等等多台机器一个IP,运用NAT的当地)。
Ajax 安全性经验规律:
- 若是你运用身份验证, 断定你在恳求页上检查!
- 为 SQL 写入检查。
- 为 JavaScript 写入检查。
- 保存商务逻辑在服务器上!
- 不要假定每个恳求是真实的!
- 承认检查数据!
- 检查恳求的数据并且断定它是正确的。
目前为止我做的最多的避免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恳求安全的办法,期待谈论。
即便没有读者,也要写博客。
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · cdn+hyper cache导致ajax-comment不可用 解决办法
- · 小程序可以绑定其它小程序吗?
- · vue3+vite+多环境发面到二级目录配置
- · 微信小程序防止事件穿透防止事件冒泡
- · 普通链接二维码跳转小程序
- · 解决flex-direction: column 之后元素宽度自动变为100%
- · vue/react/node/vite/npm/yarn build自动更新版本号
- · getVisitDistribution 访问来源定义(访问来源 key 对应关系)
- · TinyMCE工具栏配置详解
- · Ant Design Vue 1.7.8 (vu2)自定义路由菜单图标
- · vue获取节点的父节点、兄弟节点、子节点
- · vue3+vite3实现路由自动化