![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Тут один из наших постоянных посетителей занимался рефакторингом переписыванием одного из ссамых популярных сайтов рунета. Который был структурным. |
|||
|
||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: 1 Всего: 73 |
По-моему, прежде чем крыть крышу, нужно построить фундамент. Это я к тому, что прежде чем заниматься авторизацией, надо выучить язык и разобраться с общепринятыми шаблонами проектирования. -------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
подскажите мне пожалуйста вот на таком примере. У меня есть форма:
Скажите, когда данные этой формы отправятся по нажатию кнопки "зарегистрировать" в обработчик addNewUser.php, какие проверки этих данных нужно выполнить, чтобы предотвратить возможность взлома? Спасибо. |
|||
|
||||
| Spiker |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 25.5.2005 Где: Спортзал Репутация: -2 Всего: -2 |
preg_match, htmlspecialchar и mysql_real_escape_string
-------------------- Даваите жить дружно! (Леопольд.) :shy67: |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Spiker, этого достаточно?
|
|||
|
||||
| NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
yngwie19,
рассказываю по шагам. Во-первых, на многих хостингах включены волшебные слэши. Т.е. строка "привет" превращается в \"привет\" что бы избежать этого, нужно либо отключить эту опцию, либо пропускать все принимаемые данные, через функцию
Кроме того, некоторые поля нужно пропускать при приеме через функцию trim, которая удаляет пробелы в начале и в конце. preg_match позволяет проверить на правильность емейл, url, да и любые другие поля на соответствие правильному шаблону. Через mysql_real_escape_string обязательно нужно пропустить все данные (ну почти все), которые попадут потом в sql запрос. Пароль в БД лучше вообще не писать, а записать md5-hesh. Насчет htmlspecialchar не знаю. По-моему, ее нужно применять, когда в БД вносятся текстовые комментарии. Впринципе и другие данные можно через нее пропустить. Но вопрос это спорный. К безопасности из приведенного списка относится только mysql_real_escape_string и в некоторой степени md5-хешь для пароля Это сообщение отредактировал(а) NLspieler - 7.2.2010, 09:15 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
нет, назначение функции - форматировать специальные символы, применяемые в хтмл в соответствующие сущности. то есть её надо применять для вывода текста в браузер. к БД она никакого отношения не имеет |
|||
|
||||
| Spiker |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 25.5.2005 Где: Спортзал Репутация: -2 Всего: -2 |
я лично ereg использую, у меня проверка на любой тип поля есть... как то не охота все переписовать))
-------------------- Даваите жить дружно! (Леопольд.) :shy67: |
|||
|
||||
| yngwie19 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
т.е так:
и все? Добавлено через 5 минут и 15 секунд а если проверять вводимые данные по такому шаблону:
то тогда Вам вариант можно пропустить? Это сообщение отредактировал(а) yngwie19 - 7.2.2010, 17:09 |
||||
|
|||||
| NLspieler |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 619 Регистрация: 13.10.2008 Где: Берлин Репутация: 16 Всего: 19 |
Да, этого достаточно. Но нужно еще и при попытке пользователя войти на сайт, сравнивать не пароль, а его md5. md5($string) всегда равен md5($string) не зависимо от значения $string. Но получить из md5 хеша исходное значение практически не возвомжно. Таким образом мы получаем следующие плюсы: 1) никто не сможет узнать пароль пользователя, даже имея в распоряжении базу данных. 2) md хэш всегда имеет одинаковую длинну, таким образом можно экономить место в БД, прописав в соответствующее поле эту длинну. И зря. ereg мало того, что работает значительно медленние, так еще и не может обработать такие мощные регулярные выражения, которые допустимы в preg. А переписать несколько регулярных выражений особого труда не составит. Если данные принимаются из формы с лишними (волшебными слэшами), то избавлятся от них нужно в обязательном порядке. Разумется, никакого отношения к БД она не имеет, но в ряде случаев она просто не заменима. Можно конечно записывать в БД данные как есть, а можно записать в БД уже обработанные данные, готовые к выводу. Таким образом достигнется небольшая экономия мощностей процессора. Так как данные нужно будет пропускать через эту функцию только один раз. |
|||
|
||||
| nerezus |
|
||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
|
||||||
|
|||||||
| Spiker |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 25.5.2005 Где: Спортзал Репутация: -2 Всего: -2 |
ктото пробовал делать следущее?
Такое вряд-ли кто-то взломает... до тех пор пока хакер не в курсе сколько раз все было зашифровано. Это сообщение отредактировал(а) Spiker - 7.2.2010, 23:59 -------------------- Даваите жить дружно! (Леопольд.) :shy67: |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Spiker, и зачем? лучше использовать соль и все
-------------------- Amazing |
|||
|
||||
| yngwie19 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 15.6.2008 Где: Новгород Репутация: нет Всего: нет |
Spiker, тогда уж так:
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Добавлено через 1 минуту и 2 секунды P.S. может хватить страдать ерундой? если уж такие параноики то следует написать свой алгоритм хеширования и радоваться жизни -------------------- Amazing |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |