【问题标题】:ajax security preventing the url access over browserajax 安全性防止通过浏览器访问 url
【发布时间】:2012-05-24 07:06:43
【问题描述】:

我有 default.asp,它通过 ajax 与 3 个不同的 *.asp 联系。我的问题是,如果人们试图以 url 的形式打开这些页面,是否有人试图在不访问 default.asp 的情况下执行这些 *.asp 页面。 http://sample.com/ajax1.asp?get=foo 是一个如何防止对我的 ajax 页面进行此类访问的示例。

【问题讨论】:

  • 也许您可以解释为什么(在所有其他条件相同的情况下)访问这些 asp 页面会违反安全性,而访问 default.asp 则不会?

标签: ajax asp-classic security


【解决方案1】:

您可以检测该调用是否是寻找HTTP_X-Requested-With 标头的 AJAX 请求,但即使您可以检测到 AJAX 调用,您应该验证所有请求,因为恶意用户可能会进行欺骗轻松获取所有标题。

检测 AJAX 标头:

If Request.ServerVariables("HTTP_X-Requested-With") = "XMLHttpRequest" Then
   ''do stuff
Else

【讨论】:

  • 我试过了,但 Request.ServerVariables("HTTP_X-Requested-With") 没有用。没有结果来自始终为空。我在很多情况下看到 php 和 asp.net 使用它。但是,您对身份验证的建议对我很有用,谢谢。 ps:如果你能找到检测方法我会很高兴的。
  • 大多数 Javascript 框架都添加了标头,例如 jQuery。你是如何进行 AJAX 调用的?
【解决方案2】:

解决方案是在 ajax 请求中添加粗线。

    function callit()
    {
     if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
     xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4&&xmlhttp.status==200){document.getElementById('alp').innerHTML=xmlhttp.responseText;}}
     xmlhttp.open("get", "call.asp", true);
     **xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest");**
     xmlhttp.send();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-01
    • 2012-12-01
    • 2012-11-19
    • 1970-01-01
    • 2016-08-26
    • 2013-09-28
    • 2012-08-22
    • 1970-01-01
    相关资源
    最近更新 更多