2014-11-27 6 views
1

Я делаю логин и буду использовать его для регистрации, а также позволяю символы и специальные символы в письмах и паролях. Я знаю, что это создает серьезную угрозу для хакеров с инъекциями. Мой вопрос: как я могу превратить входы из полей (например, «email», «password») в строки и не разрешать серверу обрабатывать их как код и команды.Включить переменные в строки

У меня действительно очень мало информации о том, с чего начать, но попробовали mysqli_escape_string; но, как вы, скорее всего, знаете, он очень тонкий и устаревший. Я не против изучения немного, я просто очень ценю немного информации, чтобы начать!

+0

Взгляните на PDO - это упрощает работу с ненадежным входом, как это. –

+0

@FoxWilson Я согласен, PDO лучше, но mysqli также поддерживает подготовленные заявления. Не имеет никакого отношения к PDO, а запросы PDO сами по себе не добавляют защиты для пользовательских входов. – Devon

+0

Примечание. Я уверен, что 'mysqli_escape_string' (' mysqli_real_escape_string') не устарел. Хотя 'mysql_real_escape_string'. –

ответ

1
  1. Использовать подготовленные операторы при выполнении запросов mysql. (подробнее here)
  2. Ограничения длина поля ввода, когда это возможно (обычно инъекция MySQL запросы длинны. Это предотвращает выполнение измененных больше запросов даже есть уязвимость сделали по ошибке)
  3. Дайте только разрешение, необходимое для MySQL пользователи. Где бы вы ни нуждались в чтении пользователя, предоставляйте только разрешения на чтение.
  4. Шифровать конфиденциальные данные, такие как пароли. Используйте хеширование соленых паролей.
+2

Ограничение пароля до 10 символов - не очень хорошая практика. – Devon

+0

Да. Я просто хотел описать, что я имел в виду, ограничивая длину поля ввода. Я изменил это. Благодарю. –

+0

Я бы сказал, не помещайте лимит на поле ввода пароля. Больше числа возможных перестановок и комбинаций, тем сложнее их взломать. – Aditya

2

Если вы действительно не знаете, с чего начать, это не так! Однако я рекомендую не пытаться создать свою собственную систему регистрации/регистрации, если вы не знаете, что делать. Особенно, если вы заботитесь о безопасности. Это очень простое дело, даже для опытных программистов. Я буду первым, кто признается, что я потратил много времени на переделку собственных модулей входа/авторизации на PHP, а также потратил много времени на наследование кода, где другие люди применяли свой собственный метод, большую часть времени, ненадлежащим образом.

Я рекомендую изучить Интернет рамки. Мои любимые веб-фреймворки для PHP: Laravel и Code Igniter, Laravel - мой любимый. Вы также обнаружите, что здесь есть кривая обучения, но вы найдете гораздо больше поддержки для правильной и надежной проверки подлинности пользователей. Например: http://laravel.com/docs/4.2/security

С каркасом вы также можете получить множество вспомогательных методов, чтобы сделать доступ к БД веселым, легким и безопасным. Проверьте examples here! Вы всегда можете использовать raw sql, если хотите, но для ваших повседневных приложений CRUD нет необходимости!

Если вы все еще абсолютно настаиваете на том, чтобы делать это сами, хотя я буду предупреждать вас об этом в последний раз. Я рекомендую использовать PDO или MySQLi подготовленные заявления (я предпочитаю PDO).

Я предполагаю, что приложение не слишком далеко, поскольку вы все еще рассматриваете вопрос о том, как создать логин/регистрацию, поэтому вы, вероятно, не «застреваете», используя raw php и все это делаете самостоятельно. :)

+0

Если вы используете фреймворк, убедитесь, что ваша фреймворк обновлен. Поскольку злоумышленники пытаются более жестко использовать фреймворки. Они больше заинтересованы в них, потому что, если они найдут уязвимость, они могут использовать все приложение, использующее фреймворк. –

+0

Большое спасибо за ввод! На самом деле это имеет смысл. Единственная причина, по которой я работаю самостоятельно, - это то, что я хочу сказать это; но, прочитав это, я могу использовать инфраструктуру вместо этого. – saccre

+0

@plbsam определенно корректно относится к обновлению вашей фреймворка. К счастью, они регулярно обновляются и гораздо более проверены, чем вы, вероятно, захотите сделать сами, создав собственную безопасную систему auth. Но я заверяю вас в преимуществах простоты использования, и вся оснастка делает его достойным. Инструментарий включает в себя готовые функции, симпатичные URL-адреса, схему db-схемы mgmt, модели, представления, элементы управления, развертывание скриптов, шаблонирование, если вы хотите использовать fb/github/google, для этого есть эффективные плагины, буквально все, что вам нужно для создания веб-приложения. Когда этого не происходит, вы всегда можете сделать это вручную. :) –

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