PHP Security: отправить POST на тот же URL = плохо? - PullRequest
5 голосов
/ 26 октября 2010

Вчера я получил ответ на вопрос об отправке данных POST на ту же страницу с шаблоном Post-Redirect-Get , например:

if (isset($_POST['Submit'])) {
    // prevent resending data
    header("Location: " . $_SERVER['PHP_SELF']);
}

Кто-то ответил: отправка данных на ту же страницу PHP из Javascript, без AJAX или форм

Для целей веб-безопасности крайне важно, чтобы сообщение POST не могло быть отправлено с помощью простого URL-адреса.

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

Ответы [ 3 ]

6 голосов
/ 26 октября 2010

Для целей веб-безопасности чрезвычайно важно, чтобы сообщение POST не могло быть отправлено с помощью простого URL-адреса.

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

Нет ничего плохого в использовании одного и того же URL для разных методов запроса (GET, POST, PUT, DELETE, HEAD и т. д.).На самом деле, это очень хорошая идея.

1 голос
/ 26 октября 2010

Для целей веб-безопасности крайне важно, чтобы сообщение POST не могло быть отправлено через простой URL-адрес.

Я скорее интерпретирую это предложение, что не должно быть возможным, чтобы запрос GET для того же URL не вызывал то же самое, что и запрос POST. Поэтому проверка $_REQUEST['submit'] вместо неявной проверки $_POST['submit'] или $_SERVER['REQUEST_METHOD'] может быть нарушением.

Возможно, автор также имел в виду, что форма использует какой-то одноразовый токен аутентификации, так что разрешены только аутентифицированные запросы.

0 голосов
/ 26 октября 2010

Кажется, что ответчик не продумал свой ответ до конца. Я полагаю, он думал, что при использовании $ _SERVER ["PHP_SELF"] могут возникнуть проблемы с безопасностью, но я не вижу, как в этом случае.

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

Тем не менее, я все еще отделяю подтверждающее сообщение от формы. Я не вижу причин, почему я не должен. Сообщения о проверке и ошибках по-прежнему могут появляться в представлении формы, но, просто позволяя большому количеству условий определять, следует ли показывать подтверждающее сообщение, форма или сообщения об ошибках выглядят так (IMO), что вы получаете много грязного кода. *

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