Как обезопасить AJAX-запрос в ASP.NET? - PullRequest
3 голосов
/ 11 мая 2009

Я разрабатываю приложение, в котором я отображаю продукты в сетке. В сетке есть столбец, в котором есть значок отключения / включения, и по щелчку этого значка я запускаю запрос через AJAX на мою страницу manageProduct.aspx для включения / отключения этого конкретного продукта.

В моем запросе ajax я передаю productID в качестве параметра, поэтому окончательный запрос ajax выглядит как

http://example.com/manageProduct.aspx?id=234

Теперь, если кто-то (профессиональный хакер или веб-разработчик) сможет получить этот URL (который легко получить из моих файлов javascript), то он может создать сценарий, который будет работать как цикл и отключит все мои продукты.

Итак, я хочу знать, есть ли какой-либо механизм, метод или метод, с помощью которого, если кто-то попытается выполнить эту страницу напрямую, он вернет ошибку (правильное сообщение «Вы не авторизованы или что-то»), иначе если страница выполняется с нужной страницы, например, там, где я отображаю список продуктов, она будет правильно выполняться.

По сути, я хочу защитить свои AJAX-запросы, поэтому никто не может выполнить их напрямую.

В PHP:

В php мой коллега обезопасил эти страницы PHP, проверив рефрер страницы. как показано ниже:

$back_link = $_SERVER['HTTP_REFERER'];

if ($back_link =='')
{
   echo 'You are not authorized to execute this page';
}
else
{
  //coding
}

Пожалуйста, скажите мне, как использовать ту же или любую другую, но безопасную технику в ASP.NET (C #), я использую jQUERY в своем приложении для выполнения запросов AJAX.

Спасибо

Ответы [ 3 ]

4 голосов
/ 11 мая 2009

Забудьте об использовании реферера - подделать банально. Невозможно надежно определить, выполняется ли запрос напрямую или как ответ на что-то еще.

Если вы хотите, чтобы неавторизованные люди не влияли на систему, запрашивая URL-адрес, вам нужно что-то более умное, чем это, для определения уровня их авторизации (вероятно, система паролей, реализованная с помощью HTTP Basic Auth или Cookies).

3 голосов
/ 11 мая 2009

Что бы вы ни делали, не полагайтесь на заголовки http, такие как HTTP_REFERER, так как они могут быть легко подделаны.

2 голосов
/ 12 мая 2009

Вы должны проверить в своей службе, что ваш пользователь вошел в систему. Написание хорошей системы безопасного входа также не просто, но это то, что вам нужно сделать, или использовать встроенную «аутентификацию форм».

Кроме того, не используйте последовательные идентификаторы продуктов, используйте уникальные идентификаторы, у вас все еще может быть целочисленный идентификатор продукта для отображения, но для всех других применений, таких как описанное вами, вы захотите использовать уникальный идентификатор продукта / руководство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...