Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Написал авторизацию на PHP
Покинул форум
Сообщений всего: 295
Дата рег-ции: Февр. 2011 Откуда: Менеск
Помог: 5 раз(а)
1. У Вас много "SELECT * . . ." в запросах, для безопастности лучше писать конкретные поля
2. Меня учили писать session_start(); первой строчкой в коде, если используются сессии
3. mysql_close; по спецификации советуют писать так mysql_close($connect); - т.е. конкретно указывать. Хотя щас PHP умный стал и закрывать не обязательно
4. Недавно услышал на (IRBIS_team) что закрывать PHP код ?> не нужно, во избежании внедрения всяких гадостей в код
5. charset=windows-1251 - лучше сразу UTF-8, чтоб потом проблем не было
6. Мне советовали что все проверки, такие как mysql_error(), лучше использовать на моменте дебага, но когда уже реально начинаешь юзать код, то их убрать из кода, чтобы в случае чего не дать лишней информации злоумышленнику
?> нельзя ставить ни в коем случае. Это не просто вредно, но и опасно.
Объясню, чтоб не быть голословным.
1. После него может оказаться пробел или перенос строки. А так, как файл подключен выше доктайпа, значит и пробел вылезет туда. А это гарантированно угробит верстку в IE.
2. Всё, что написано после него, интерпретируется как HTML. А это значит, что (не дай Бог) в конец файла попадет вирус, то он сработает.
А тупые боты именно туда норовят прописать всякую гадость. Так вот, ежели его (закрывающего значка) не будет, то вирь попадет в тело php и вызовет ошибку. Плохо конечно, но лучше, чем бы он сработал у клиента.
Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010
Помог: 3 раз(а)
molchun201 пишет:
http://irbis-team.com/15/10/2
Спасибо за статью, очень познавательно.
Т.к. сам начинающий, то узнал много интересностей.
Advinno
Отправлено: 14 Мая, 2011 - 17:41:08
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2011
Помог: 0 раз(а)
molchun201 пишет:
1. У Вас много "SELECT * . . ." в запросах, для безопастности лучше писать конкретные поля
2. Меня учили писать session_start(); первой строчкой в коде, если используются сессии
3. mysql_close; по спецификации советуют писать так mysql_close($connect); - т.е. конкретно указывать. Хотя щас PHP умный стал и закрывать не обязательно
4. Недавно услышал на (IRBIS_team) что закрывать PHP код ?> не нужно, во избежании внедрения всяких гадостей в код
5. charset=windows-1251 - лучше сразу UTF-8, чтоб потом проблем не было
6. Мне советовали что все проверки, такие как mysql_error(), лучше использовать на моменте дебага, но когда уже реально начинаешь юзать код, то их убрать из кода, чтобы в случае чего не дать лишней информации злоумышленнику
Спасибо. Учел все пункты.
И сайт от Ирбиса хорош.
Еще комментарии есть?
OrmaJever
Отправлено: 14 Мая, 2011 - 17:43:34
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Advinno пишет:
Еще комментарии есть?
код написан плохо, некоторые условия можно объеденить, запросы так же обьеденить, и некоторые повторяющиеся части кода в функцию записать.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Advinno
Отправлено: 14 Мая, 2011 - 18:03:11
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2011
Помог: 0 раз(а)
OrmaJever пишет:
код написан плохо, некоторые условия можно объеденить, запросы так же обьеденить, и некоторые повторяющиеся части кода в функцию записать.
Согласен, что до идеала далеко. Для начинающего не плохо.
Можете дать конкретные рекомендации? Был бы очень признателен.
OrmaJever
Отправлено: 14 Мая, 2011 - 18:52:42
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
// и затем место этих 4 строк вызывать только loc() или loc('login.php');
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Advinno
Отправлено: 14 Мая, 2011 - 19:12:51
Новичок
Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2011
Помог: 0 раз(а)
Спасибо. Все учту.
А есть какие-то грубые ошибки кроме "or die(mysql_error())", которые снижают безопасность?
destus
Отправлено: 14 Мая, 2011 - 19:42:34
Гость
Покинул форум
Сообщений всего: 107
Дата рег-ции: Апр. 2011
Помог: 4 раз(а)
mysql_connect("localhost","MySQL_login","11111") or die(mysql_error());
mysql_select_db("My_db") or die(mysql_error());
лучше в отдельный файл запихнуть и через require_once подключать. Почти в каждом скрипте это будет использоваться, т.е. если название базы изменится, придется в каждом файле менять.
sergtka4ov
Отправлено: 14 Мая, 2011 - 23:56:20
Новичок
Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2010
Помог: 0 раз(а)
[+]
molchun201 пишет:
4. Недавно услышал на (IRBIS_team) что закрывать PHP код ?> не нужно, во избежании внедрения всяких гадостей в код
Не кажется ли это бредом?
Лично у меня не закрытый ?> вызвал Parse error: syntax error, unexpected '<' in .....\index.php on line 20
molchun201
Отправлено: 15 Мая, 2011 - 00:11:46
Посетитель
Покинул форум
Сообщений всего: 295
Дата рег-ции: Февр. 2011 Откуда: Менеск
Помог: 5 раз(а)
sergtka4ov подразумевается что после кода ничего другого уже не будет!
А у меня предчуствие что у Вас там html или js или ненароком 2-ой кусок php кода
синтаксически корректен и используется разработчиками фреймворков, как минимум.
Advinno, а зачем пароль обрезаете? Всё равно же хэшируете.
Валидность логина - лучше использовать регулярку, и читается легче и дополнительные символы проще прописывать. И быстрее будет.
Строки 6-16 достаточно 1 запроса, SQL-функции даты и времени в помощь http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]e-functions[dot]html
----- PostgreSQL DBA
sergtka4ov
Отправлено: 15 Мая, 2011 - 00:14:14
Новичок
Покинул форум
Сообщений всего: 35
Дата рег-ции: Май 2010
Помог: 0 раз(а)
[+]
molchun201 пишет:
sergtka4ov подразумевается что после кода ничего другого уже не будет!
А у меня предчуствие что у Вас там html или js или ненароком 2-ой кусок php кода
Точно так и есть, далее HTML и опять вставки php и тд.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.