![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
0Z0NE |
|
||||||||||
![]() HEY4 ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.4.2012 Репутация: нет Всего: нет |
Доброго времени суток Уважаемые Знатоки, тема конечно заеженная но всё-же, как лучше обезопасить сайт?
Объясню свой вопрос: Если нужно ловить пользовательские данные в числовом виде то (integer) вполне спасает, гораздо интереснее дело обстоит с текстовым типом данных, к примеру в гостевой(чате или форуме) в текстовых сообщениях достаточно использования htmlspecialchars($str, ENT_QUOTES, 'cp1251'). Однако, при использовании форм авторизации желательно "восприятие" спецсимволов дабы повысить защиту, так вот собственно вопрос, какие символы (кроме кавычек естественно) можно использовать при записи\чтении в(из) БД, и в каком формате лучше всего записывать допустимые символы(в виде HTML сущностей или в "открытом" виде?). Есть несколько кусочков кода над которыми размышляю... Оригинал строки: формируеться в браузере как: linkB ?> # - -- / \* // ?> # ' "
"Выпиливание"(замена) из строки определённых символов: формируеться в браузере как: ahreflinkBlinkabBbdd, такой себе "топорный" вариант, зато 100% ни один спецсимвол который был запрещен не останеться в живых. Еще плюс(как по мне) то можно определённые символы заменять на какуюлибо определённую раннее соль, к примеру @$string_danger = str_replace("*", "salt_1543", $string_danger);, хотя вроде уже тянет на изврат ![]()
Собственно сама перегонка в HTML сущности, с екранированием кавычек: формируеться в браузере как: <a href="linkB">link</a><b>B</b> ?> # - -- / \* // ?> # ' ", помоему самый лучший вариант для форм отправки сообщений во всякие чаты\ответы на темы на форуме, однако стоит-ли использовать такой подход в формах авторизации?
Ну и конечно-же использование mysql_real_escape_string: формируеться в браузере как: linkB ?> # - -- / \\* // ?> # \' \", с учётом что атрибут href тега <a> так-же подвергаеться экранированию кавычек(как в принципе и ожидаеться), однако mysql_real_escape_string никак не экранирует те-же символы = или /* или -- (что вродебы так-же являеться комментарием)
Еще раз напомню вопрос(в сжатом виде): Что из приведенного выше кода разумнее(правильнее?) использовать при проверке данных из форм авторизации? Сейчас используеться конструкция вида:
хотя trim() работает только тогда когда последовательность спецсимволов введенных пользователем совпадают с последовательностью спецсимволов в trim() ![]() |
||||||||||
|
|||||||||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Не используйте старьё, вроде библиотеки mysql, она уже давно заменена на mysqli.
Используйте предподготовленные выражения вместо изобретания велосипеда. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
0Z0NE |
|
|||
![]() HEY4 ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.4.2012 Репутация: нет Всего: нет |
Спасибо за совет, почитаю, однако сайт почти дописанный(да я не правильный сначала пишу всё, а потом вспоминаю что существует ещё и безопастность
![]() ![]() Это сообщение отредактировал(а) 0Z0NE - 31.3.2013, 16:34 |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Ну ей уже как 10 лет скоро будет... Еще с 2004-го вместе с PHP 5.0 появилась... Да и, в конце-концов, писать все эти кучи строчек из первого поста вы готовы, а поменять пару старых и добавить пару новых строчек — это уже долго? -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
0Z0NE, вместо столбиков str_replace
можно посмотреть в сторону strtr() если уж хочется использовать свой вариант -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
||||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
//offtop
нужно сделать раздел "Вопросы по истории" ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
[offtopic]
Надо просто сделать дополнительно поле при создании темы: Укажите год выпуска/публикации тематического материала (учебник, статья, мануал...), в результате изучения/чтения/ознакомления с которым у вас возник описанный вами вопрос: И варианты: 2 года назад 1 год назад В этом году Других вариантов не предоставлять =)) [/offtopic] Это сообщение отредактировал(а) Arantir - 1.4.2013, 18:59 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
В качестве фильтрации текста порекомендую вкусный инструмент jevix
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
0Z0NE |
|
|||
![]() HEY4 ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.4.2012 Репутация: нет Всего: нет |
о! похоже именно то что нужно, сча попробуемс... Спасибо большое) на всякий пожарный экран от ошибок, хотя 99,9999% он лишний но паранойяжЭ ![]()
ого премоч, не натыкался и даж не думал что такие водяться ![]() ![]() ![]() З.Ы. не в обиду будь сказано но это как паника с DIV, вроде круто и модно вроде и плюсы есть но спозиционировать кроссбраузерно див порой по коду выходит в пару раз больше нежели таблицами ![]() |
|||
|
||||
Aliance |
|
||||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
во-первых, это крайне неправильно. во-вторых, если уж и использовать этот костыль, то правильно.
видимо, программирование - не ваша основная деятельность, иначе бы вы знали, что тенденции очень динамичны и кто не успевает за ними - в отстающих. по-моему, такая паранойя была лет 5 назад, сейчас уже никто таблицами не верстает, поэтому и паранойи нет. |
||||||
|
|||||||
0Z0NE |
|
|||
![]() HEY4 ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.4.2012 Репутация: нет Всего: нет |
Спасибо за объяснение ошибки с @, буду пытаться исправляться
Да Вы правы, профессионально не программирую, просто интересно бывает чегонить написать, особенно если ОНО( ![]() ![]() Думаю дабы не разводить флуд тему пора закрывать, Спасибо еще раз всем кто помог и ткнул носом на путь истинный ![]() Это сообщение отредактировал(а) 0Z0NE - 2.4.2013, 17:01 |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
0Z0NE, MySQL отличная вещь.... была когда-то.. Я просто уже давно использую "подготовленные выражения" и просто забыл что такое инъекции. Это давно в прошлом.. По этому тут всё чаще начинают смеяться над теми кто до сих пор пытается что-то придумывать из десятков (сотен) строк кода чтобы повысить безопасность.. Особенно когда приводят примеры из древнейших учебников. Хотя просто достаточно сделать очень маленький шаг вперёд и все эти глупости пройдут. А будешь упрямо сидеть на старье, никогда не шагнёшь со всеми в ногу
![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Arantir |
|
||||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 16 Всего: 55 |
Сори, это утверждение в программировании не работает =)
В отличии от обсуждаемой в данной теме вопроса, таблицы никогда не предназначались для верстки структуры страницы. Они должны были быть только таблицами, как br является только переносом строки, а hr — только линией. Просто больше всякие выверты верстать было нечем.
Если бы не ставилось вопроса о инъекциях (например, все запросы захардкодены и неизменяемы), то и предложения о mysqli с предподготовленными запросами, скорее всего, не последовало бы. Если вам хочется "просто для души", то лучше почитайте, как работают те же предподготовленные запросы. Далеко не все "остатки истории" программирования напрямую полезны для изучения. SQL-инъекции — это проблема, которая "вылезла боком" из-за невозможности предусмотреть сразу все и вся. И посимвольная фильтрация — это, в принципе, просто "костыли", средства для борьбы с последствиями существования этой проблемы. Предподготовленные запросы же — это устранение проблемы, как таковой, так сказать, настоящее решение проблемы. Это сообщение отредактировал(а) Arantir - 3.4.2013, 08:23 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||
|
|||||
0Z0NE |
|
|||
![]() HEY4 ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 25.4.2012 Репутация: нет Всего: нет |
Gold Dragon, Arantir, это всё любовь нашего народа изобретать вилосипеды
![]() P.S. пока только окинул взглядом документацию, не углублялся, посему ничего конкретного не могу сказать, отчасти интересно, отчасти лениво перебирать по косточкам написанные конструкции где (как Вы уже догадались) каждая переменная полученная от пользователя "фильтруеться" методами наподобие тех, что описаны в первом посту, скорее всего переходить буду, но не сразу ибо нужно хотя-бы подпривыкнуть к конструкциям вида mysqli::$client_info, не говоря уже хотябы о частичном осознании смысла и логики того что я буду делать. Это сообщение отредактировал(а) 0Z0NE - 3.4.2013, 11:53 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |