Сделайте веб-приложение безопасным - PullRequest
2 голосов
/ 01 февраля 2010

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

  • Выйти из пользовательского ввода ($ _GET && $ _POST) с помощью дополнительных черт
  • Сделать подготовленные заявления с PDO
  • Проверка ввода пользователя для правильного типа (например, int или string)

Ответы [ 2 ]

6 голосов
/ 01 февраля 2010

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

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

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

Если вы можете получить книгу Справочник хакера веб-приложений: обнаружение и использование уязвимостей безопасности . Там полно полезных советов.

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

1 голос
/ 01 февраля 2010

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

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

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.

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