PHP и вопрос о безопасности Ajax

Я в настоящее время создаю веб-приложение, в котором файлы PHP загружаются в основной файл с помощью $ jQuery .ajax функция. Однако файлы PHP очевидно все еще доступны за пределами приложения, просто введя имя файлов в строке поиска.

Таким образом, мой вопрос - то, что было бы лучшим способом сделать его так, чтобы файл PHP, являющийся 'ajaxed' в, знал, что содержится в корректной странице и будет функционировать правильно, но если к нему получают доступ каким-либо другим способом (даже если кто-то должен был сделать, они - собственный сайт и Ajax в моем файле PHP), затем, файл должен сказать "доступ запрещен" или что-то.

Заранее спасибо

25
задан carter663 29 July 2010 в 12:00
поделиться

4 ответа

вы также можете заблокировать хотлинкинг, если беспокоитесь, что другие могут получить доступ к вашему контенту без вашего разрешения.

см.: http://www.htmlbasix.com/disablehotlinking.shtml

2
ответ дан 28 November 2019 в 18:00
поделиться

Это непросто и, вероятно, нет никакого способа сделать это вообще. Вы можете потребовать некоторые переменные POST в вашем файле php и отправить их в запросе AJAX. Это защитит вас от того, кто просто вставит URL-адрес в свой браузер.

Никто не может использовать AJAX для вашего сайта из другого домена (проблемы с безопасностью), но всегда может подключиться и быстро отправить http-запрос, например, через cURL.

Вы можете создать токен в файлах cookie, который также будет виден из запроса jquery, но это решение также можно взломать.

1
ответ дан 28 November 2019 в 18:00
поделиться

Цитата Эрана Гальперина из аналогичного обсуждения

Как говорили другие, запрос Ajax может подражать созданию надлежащего заголовки. Если вы хотите иметь базовый проверьте, является ли запрос Ajax запрос, который вы можете использовать:

 if ($ _ SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
 // Запрос идентифицирован как запрос ajax
}

Однако вы никогда не должны основывать свои безопасность на этом чеке. Будет исключить прямой доступ к странице если это то, что вам нужно.

Пожалуйста, примите во внимание этот ответ Джереми Рутена :

Нет никакого способа гарантировать, что они обращаются к нему через AJAX. И прямой доступ, и доступ AJAX поступает от клиента, поэтому он может легко быть подделанным.

Почему вы все равно хотите это сделать?

Если это потому, что код PHP не очень безопасный, сделайте код PHP более безопасный. (Например, если ваш AJAX передает идентификатор пользователя в файл PHP, напишите код в файле PHP, чтобы убедитесь, что это правильный идентификатор пользователя.)

Более умные мысли в обсуждении, указанном выше.

10
ответ дан 28 November 2019 в 18:00
поделиться

JavaScript, запущенный в другом домене, не может получить доступ к какой-либо странице в вашем домене, потому что это нарушение Политики одинакового происхождения . Злоумышленнику потребуется воспользоваться уязвимостью XSS, чтобы это осуществить. Короче говоря, вам не нужно беспокоиться об этой конкретной атаке, это те же самые старые атаки, которые затрагивают каждое веб-приложение.

2
ответ дан 28 November 2019 в 18:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: