2012-05-22 5 views
1

У меня есть default.asp, и он связывается с 3 различными * .asp через ajax. Мой вопрос заключается в том, что человек пытается выполнить эти * .asp-страницы без доступа к default.asp, если люди пытаются открыть эти страницы в качестве URL-адреса. http://sample.com/ajax1.asp?get=foo - пример того, как можно предотвратить такой доступ к моим страницам ajax.ajax security, предотвращающий доступ к 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(); 
    } 
Смежные вопросы