Я не запускаю критически важный веб-сайт, поэтому я не ищу промышленного решения. Однако я бы хотел защитить от базовых атак, таких как кто-то, издеваясь над ложной страницей на жестком диске и пытаясь получить несанкционированный доступ. Существуют ли какие-либо стандартные методы для обеспечения того, чтобы подача формы принималась только в законных целях?Как защитить формы PHP?
ответ
Вы не можете. Нет надежного способа различать HTTP-запрос, созданный пользователем на вашей странице, или злоумышленник с собственной веб-страницей.
Просто используйте правильный подход к аутентификации по паролю, и никто не сможет сломать что-либо, если они не знают пароль (независимо от того, откуда идут HTTP-запросы). Как только у вас будет надежная аутентификация на стороне сервера, вам не нужно тратить время на прохождение через непродуманные обручи, беспокоясь об этом сценарии.
@Ben: Злобный злоумышленник легко обойти. –
Несколько методов близки:
- продуцируют форму ключа для каждой формы. Ключ будет относиться к записи базы данных и что-то еще уникальное в отношении просмотра страницы (идентификатор пользователя, файл cookie и т. Д.). Форма не может быть отправлена, если ключ формы не соответствует этому пользователю/cookie. Ключ используется только один раз, не позволяя автоматическому инструменту снова размещаться с помощью украденного ключа (для этого пользователя).
- Ключ формы также может быть хэшем с разделяемым секретом: PHP, генерирующий форму, может хэш-файл cookie и userID, например, что-то, что вы можете проверить при отправке формы.
- Вы можете добавить капчу, требующую подтверждения пользователем.
- Вы также можете ограничить количество сообщений от этого пользователя/файла cookie (дросселирование), что может предотвратить определенные формы автоматического злоупотребления.
Вы не можете гарантировать, что форма не размещена на диске, но вы можете ограничить, насколько она автоматизирована.
Как насчет нонс
http://en.wikipedia.org/wiki/Cryptographic_nonce
Не стесняйтесь подробно рассказывать о том, как вы это сделаете в PHP. Просто сказать «использовать nonce» немного меньше, чем полезно. – cHao
я также рекомендую:
- Сохранить IP компьютера, который отправляет форму (чтобы заблокировать его с сервера, если it.s раздражает)
- Используйте CAPTCHA, когда это необходимо, чтобы избежать роботов ...
- Отправляйте пользователей на другую страницу, когда информация загружается, поэтому данные POST не будут восстановлены при обновлении страницы.
Обратите внимание, что IP-адреса могут использоваться более чем одним клиентом по крайней мере по нескольким причинам (например, повторное использование IP-адресов и маскирование маршрутизатора). –
Вы не должны создавать систему входа самостоятельно, потому что это сложно сделать правильно (безопасность). Вы не должны хранить пароли (в любой форме) ваших пользователей на вашем сайте (опасно) => Возьмите, например, lifehacker.com, который был взломан (моя учетная запись тоже :(). Вы должны использовать что-то вроде lightopenid (так как stackoverflow также использует openid) для вашей аутентификации.
Остальные формы у вас есть на вашем сайте должны иметь следующую защиту (по крайней мере):
- CSRF защита: This link объясняет thorougly, что CSRF есть и что еще более важно, как защититься от CSRF
- Использование http-only cookies: http-only sessions, http-only cookies
- Защита от XSS using filter.
- Использование PDO подготовлено заявление для защиты самостоятельно, вы против SQL-инъекции
Есть несколько метод, который можно добавить в виде безопасности, как
- сенсибилизирования на вход
- Origin Validation
- Повторно captcha
- AVoid переменная сервера
Для получения более подробной информации вы можете обратиться к разделу безопасности PHP Form handling tutorial.
- 1. Как защитить формы покупки Paypals
- 2. Как защитить файл PHP?
- 3. Как защитить php-файлы
- 4. Как защитить php-код?
- 5. Как защитить файл php
- 6. Как защитить php-страницу, где нет формы, проверьте ее с
- 7. Как защитить данные формы на моем сайте?
- 8. Как защитить файл сценария процессора формы?
- 9. Как защитить форму Post в php?
- 10. как защитить страницы PHP правильно
- 11. Как защитить логин php-mysqli?
- 12. Как можно защитить PHP-код?
- 13. как защитить InputField с PHP
- 14. Как защитить PHPSESSID в php?
- 15. Как защитить php based webservice
- 16. как защитить ajaxRequest.open php script
- 17. Как защитить Android-php-соединение?
- 18. Как защитить php-редактор в php?
- 19. Как защитить форму контакта в PHP
- 20. Как я могу защитить свою форму Php?
- 21. Как защитить инъекционной формы MySQL через адресную строку
- 22. Защитить от «Формы переполнения» в Symfony
- 23. Как защитить пароли базы данных в PHP?
- 24. Как защитить исходный код веб-приложений PHP
- 25. Как защитить каталог с помощью PHP?
- 26. Как защитить строку подключения mySQL в PHP?
- 27. Как защитить php-данные, получающие подкаталоги
- 28. Как я могу защитить php-код?
- 29. Как защитить приложение PHP от атаки CRLF?
- 30. Как защитить файлы, используя php-login-minimum
Ответы, которые вы получаете до сих пор (хотя и хороши), довольно широки по охвату. Если вы можете уточнить свой вопрос, вы можете получить более подробные ответы. В частности, какое разрешение вы используете, которое можно обойти, «высмеивая ложную страницу»? –
Как только у кого-то есть доступ к вашему диску, его игра закончилась. В этот момент они выполняют удаленное выполнение кода. Стандартные методы? Против чего? Прочитайте OWASP. – rook