Как уже отмечали другие, md5 не работает.Кроме того, хэш SHA1 очень быстро вычисляется, что фактически делает его хуже как алгоритм хэширования.Вместо этого посмотрите на bcrypt.Предполагая, что вы используете PHP, http://www.openwall.com/phpass/ - очень хороший пароль для использования, который прозрачно обрабатывает хеширование и засолку.
Использование preg_replace () для экранирования данных в базу данных - очень плохая идея .Почти все базы данных имеют свои собственные функции очистки, PHP / MySQL не является исключением с mysql_real_escape_string ().
Некоторые дополнительные пункты (обратите внимание, что ни один из них не выделен):
Очистить все входные данные Предположим, что все, что пользователь отправляет на ваш сервер, предназначено для причинения вреда.Это включает в себя отправку формы, а также маршруты URL, значения cookie, серверные переменные, ВСЕ.Использование фреймворка часто обеспечивает некоторую изоляцию от этого, автоматически избавляя вас от большого количества данных.
Выход из всего вывода Предположим, что все, что вы отображаете на своем сайте, предназначено для причинения вреда. XSS и CSRF являются одними из наиболее распространенных методов атаки на веб-сайты.Сбросьте весь текст, который вы выводите в браузер.Рассмотрите возможность использования одноразовых номеров для смягчения атак.
Используйте TLS / SSL Если вы хотите защитить входящие данные ваших пользователей, получите себе подписанный сертификат SSL и настройте его.Это позволяет посетителям безопасно переходить на https://yoursite.com (или, по крайней мере, более безопасно, если они относятся к тому типу людей, которые занимаются интернет-банкингом в кафе wifi).
Использование каркаса Каждый начинает с написания своей собственной структуры, потому что он знает, как сделать это правильно, или ему не нужна дополнительная сложность или любая другая причина, по которой он придумывает.Если вы не пишете суперспецифическое нишевое приложение, для которого PHP в любом случае, вероятно, не является правильным ответом, использует каркас .Я предпочитаю http://kohanaframework.org/,, но есть целый диапазон от http://codeigniter.com/ до http://framework.zend.com/. Каркасы обрабатывают шифрование сеанса, экранирование базы данных, очистку ввода и многое другое для вас, и потому что онииспользуется многими людьми, вероятность ошибки намного меньше, чем код, над которым работал только один человек.
Защита вашей инфраструктуры Эта ошибка имеет тенденцию летать большинством людей, но убедитесь, что выПотратьте некоторое время на просмотр серверов, на которых вы работаете.Вы на общей учетной записи?Вы не хотите хранить финансовую информацию о них (в некоторых странах это даже незаконно).Примените исправления безопасности для вашей ОС / программного обеспечения, убедитесь, что вы не оставили старый скрипт загрузки, проверьте права доступа к файлам, используйте SSH с ключами и отключите пароли для входа.Злоумышленники всегда ищут самый легкий путь.
В конце дня, единственный способ оставаться в безопасности - это спать с одним открытым глазом, полностью параноидально.Следите за своими журналами, устанавливайте Nagios и настраивайте некоторые оповещения, нанимайте профессионала для проведения аудита безопасности.Нет такой вещи, как 100% безопасность, но зная, что это полдела.