Безопасность в Ajax: Как предотвратить cURL для публикации данных? - PullRequest
3 голосов
/ 09 мая 2011

Я искал это решение навсегда, вот моя проблема:

У меня есть функция вызова файла .PHP, которая будет получать данные POST и выполнять PHP в соответствии с данными, например:

if ($_POST["data"] == "delete") //Do something to delete something
if ($_POST["data"] == "reset") //Do something here

Так что в основном я могу Ajax из того же домена, чтобы сделать файл для запуска в соответствии с моими данными.Ajax абсолютно не может пересекать домен здесь.Моя проблема в PHP, я обнаружил вызов функции cURL (), который может публиковать данные на моем PHP-сайте, и я искал много методов в Google, но я не могу найти какое-либо решение, чтобы люди не могли cURL мой сайт,Я обнаружил, что они могут использовать Session что-то, но даже если я использую Session, всегда есть способ передать его (я видел это, пока выполнял поиск).

Поэтому мой вопрос:ли вообще запретить людям публиковать данные на моем сайте?Я почти уверен, что они не могут использовать Ajax, но я действительно беспокоюсь о cURL в PHP.

Я благодарен за любое предложение.

Спасибо, ребята, заранее.[Х]

Ответы [ 4 ]

5 голосов
/ 09 мая 2011

Перед выполнением действия - проверьте, есть ли у текущего пользователя разрешения на это.

Так что никакой специальной защиты нет, просто напишите свой обычный код (да, в нормальном коде вам необходимо проверить разрешения).

На самом деле (благодаря @alex) браузер выполняет абсолютно ту же работу, что и curl, поэтому даже невозможно определить, получаете ли вы запрос от браузера или от читера.

3 голосов
/ 09 мая 2011

Невозможно защитить ваш сайт от произвольных запросов POST. Любой может отправить запрос POST с произвольными данными на ваш сайт. cURL - это только один из многих возможных способов сделать это.

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

1 голос
/ 09 мая 2011

AJAX не может ничего предотвратить.Вы предполагаете, что данные, отправляемые на сервер, генерируются AJAX, который, в свою очередь, генерируется JavaScript, который, в свою очередь, генерируется браузером.При наличии достаточного количества времени любой, кто владеет JavaScript, может интерпретировать то, что вы хотите, чтобы сервер получал в запросе, и построить этот запрос, используя даже самые простые инструменты, такие как telnet или netcat.Любые действия, которые изменяют или удаляют данные на вашем сервере, не должны передаваться неизвестным людям или с неопределенными параметрами.

1 голос
/ 09 мая 2011

Безопасность при обработке запросов на основе AJAX ничем не отличается от аутентификации / авторизации / проверки, обрабатывающей любой запрос от клиента к серверу. Базовыми проверками являются действительные данные сеанса, данные пользователя и привилегии, а также источник запроса (тот же компьютер / IP).

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