2010-01-31 3 views
2

Я хотел создать новое веб-приложение php, и если я последую следующим вещам, это мой сайт, то безопасный?Сделать веб-приложение безопасным

  • ввод пользователя побег ($ _GET & & $ _POST) с addslashes
  • сделать подготовленные заявления с PDO
  • Проверка ввода пользователя для нужного типа (например, INT или строка)

ответ

6

безопасности это не то, что можно закрепить - это постоянный процесс улучшения.

  • Использование addslashes не поможет - вам нужно избежать вывода с htmlentities.
  • Использование подготовленного заявления с PDO является хорошим.
  • Проверка ввода данных для типа недостаточно - вам нужно проверить его лучше. Если вы ожидаете, что адрес электронной почты проверяет его, не предполагайте, что если у вас есть строка, это нормально.

Есть много вещей, которые необходимо учитывать для обеспечения безопасности как XSS, CSRF ...

Если вы можете получить книгу The Web Application Hacker's Handbook: Discovering and Exploiting Security Flaws. Он полон полезных советов.

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

+0

Полезные ссылки на бесплатную информацию. Это довольно общий вопрос. – rook

+0

Зачем использовать bitly для вашей ссылки. Это делает невозможным рассказать, куда будет отправляться ссылка. – chollida

+0

О, я вижу. Таким образом, вы можете поместить свой собственный код ссылки в ссылку bit.ly. sneaky :) – chollida

1

К сожалению, есть много проблем, которые могут пойти не так с веб-приложением secuirty. Я рекомендую прочитать OWASP Top 10. Кроме того, обязательно прочтите # 5 XSRF.

«экранирующий» вход не говорит очень много. Данные могут использоваться многими разными способами. Например, лучший способ предотвратить XSS для РНР:

htmlspecialchars($_GET['var'],ENT_QUOTES); 

Хороший способ предотвратить SQL-инъекции для msyql является:

mysql_query("select * from mysql.user where id='".mysql_real_escape_string($id)."'"); 

Убедитесь, что вы положили в кавычки всех переменных, или запрос будет уязвим для SQL-инъекции. Но более пуленепробиваемый подход использует параметризованные запросы (adodb, pdo ...). Но инъекция xss и sql - это только верхушка ледяного рынка, и многое другое может пойти не так, как с php. Я рекомендую читать БЕСПЛАТНУЮ бумагу A Study in Scarlet для конкретных ошибок безопасности PHP.

Смежные вопросы