К сожалению, триггеры в MySQL не умеют отменять операцию (только если искусственно генерировать в них ошибку). Потому они годятся только для синхронизации данных (вести логи, автоматически модифицировать данные в связанных таблицах и т. д.), но совершенно не подходят для верификации данных.
Потому проверять корректность пароля необходимо на сервере до его записи в базу. Проверка только на клиенте не проходит, т. к. в этом случае хакер сможет сделать запрос посредством CURL с совершенно "левым" паролем.
В БД должен храниться не пароль, а его хеш. Причём обязательно сформированный с "солью". Хеширование не даёт воспользоваться паролями тому, кто украдёт твой базу, а сгенерированная для каждого пароля соль не позволяет восстановить пароли из хешей методом "радужных таблиц".
Соответственно, генерироваться хеши паролей должны на сервере (для чего в том же PHP есть специальные функции).
Впрочем, это можно делать и непосредственно в БД (вот для этого триггеры MySQL подходят идеально) - но тогда и проверять правильность логина/пароля тоже придётся в БД - посредством хранимой процедуры.
SQL
Как в Mysql поставить, что бы при регистрации пароль содержал не меньше 8 символов?
Через php или др. серверный язык
Если не ошибаюсь то это javascript проверяет
Артур Гюлумян
а спасибо буду искать, думал это в Mysql настраивается
сделай на стороне mysql sql server Тригер на таблицу с проверкой на вставку длины поля пароля.
тогда отпадёт необходимость в клиенте править если изменится условия по знакам в пароле.
тогда отпадёт необходимость в клиенте править если изменится условия по знакам в пароле.
Антон Иванов
и шифровать пароль средствами mySQL?
или хранить пароль в чистом виде?
Дмитрий Царь прав: проверку+шифрование+запись пароля в БД надо делать на сервере, с помощью серверных языков.
Игорь, а как вы вообще представляете себе правку в клиенте? кто для вас клиент, что и каким образом вы собирались у него править?
или хранить пароль в чистом виде?
Дмитрий Царь прав: проверку+шифрование+запись пароля в БД надо делать на сервере, с помощью серверных языков.
Игорь, а как вы вообще представляете себе правку в клиенте? кто для вас клиент, что и каким образом вы собирались у него править?
Не MySQL это выполняет, а серверные языки. PHP, например:
$password = $_POST['password'];
if(strlen($password)>=8) {
// отправляем запрос к БД
} else {
// выводим сообщение о том, что пароль содержит меньше 8 символов
}
Если собираешься пароль шифровать, то делай уже в условии (в блоке отправки запроса), т. к., если будешь шифровать, например, в md5, даже цифра 1 будет выглядеть так: "c4ca4238a0b923820dcc509a6f75849b", что есть больше 8 символов. В итоге, пароль из одного символа спокойно будет "влезать" в правило.
$password = $_POST['password'];
if(strlen($password)>=8) {
// отправляем запрос к БД
} else {
// выводим сообщение о том, что пароль содержит меньше 8 символов
}
Если собираешься пароль шифровать, то делай уже в условии (в блоке отправки запроса), т. к., если будешь шифровать, например, в md5, даже цифра 1 будет выглядеть так: "c4ca4238a0b923820dcc509a6f75849b", что есть больше 8 символов. В итоге, пароль из одного символа спокойно будет "влезать" в правило.
Похожие вопросы
- Под каким пользователем нужно работать в MySQL?
- MySQL Truncate/Delete - как это работает?
- Почему так нужен mysql?
- Друзья пожалуйста скажите любой бесплатный хостинг чтобы работал и поддерживал PHP + MySQL.
- Не отрабатывает вложенный MySQL запрос
- Обязательно ли делать первичный ключ (id колонку) в таблице mysql, если каждое значение и так будет уникальным?
- Форма ввода в базу данных MySQL через Php
- MySQL.Задания по запросам.
- Помогите решить 2 проблемы с Mysql
- Помогите разобраться с синтаксисом, серверный MySQL на PHP.