2012-05-22 112 views
1

我有default.asp,它通過ajax與3個不同的* .asp聯繫。我的問題是,如果有人試圖在不訪問default.asp的情況下嘗試執行這些* .asp頁面(如果用戶試圖將這些頁面作爲url打開)。 http://sample.com/ajax1.asp?get=foo是一個示例,它可以防止對我的ajax頁面進行這種訪問。ajax安全防止通過瀏覽器訪問url

+0

也許你可以解釋爲什麼訪問這些asp頁面的原因(所有其他條件都相同)會違反訪問default.asp的安全性。 – AnthonyWJones

回答

1

您可以檢測如果呼叫是一個AJAX請求尋找HTTP_X-Requested-With頭,但即使你可以檢測一個AJAX調用,你應該驗證所有的請求,因爲惡意用戶可以很容易地欺騙所有的頭。

檢測AJAX頭:

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

我試過,但Request.ServerVariables(「HTTP_X-Requested-With」)沒有工作。沒有任何結果總是爲空。我在很多情況下看到了php和asp.net使用它。不過,您對身份驗證的建議會對我有用,謝謝。 ps:如果你找到一種方法來檢測我會很高興。 –

+0

標題是由大多數JavaScript框架添加的,如jQuery。你如何進行AJAX調用? –

0

將該溶液加入粗線到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(); 
    }