RDot

RDot (https://rdot.org/forum/index.php)
-   Аудит Web-приложений/Web Application Security Audit (https://rdot.org/forum/forumdisplay.php?f=27)
-   -   Аудит сайта на самописной системе управления (https://rdot.org/forum/showthread.php?t=1412)

Qwazar 19.04.2011 19:18

CrazyPilot, правильнее mysql_real_escape_string для строк. Для интов либо intval, либо используй приведение типов $id = (int)$_GET['id'];

З.Ы.
А error_reporting вообще выруби наглухо в .htaccess, когда отдебажишь.

Jokester 19.04.2011 19:50

Вспомнилось для int

$a = 0+$GLOBALS['a'];

PS Всерьёз не воспринимать, привет админу одного из хакфорумов :)

C3 ~ RET 20.04.2011 00:20

Одним из наиболее эффективных методов защиты считается использование параметризованных команд (prepared statements).
Фильтрация с помощью регулярок тоже допустима, но только если есть однозначное понимание кода. Само собой, символы a la . не должны присутствовать в фильтре. Как было указано выше - приведение типов не должно использоваться при формировании условий. В PHP > 5.0 эффективным является использование mysqli_prepare. В случае использования PEAR возможно использование DB_common::prepare() и DB_common::query()

Qwazar 20.04.2011 00:39

Jokester, кстати твой вариант вполне норм вариант.
C3 ~ RET, можно конечно перепилить всю архитектуру приложения целиком, но способ предложенный остальными проще и требует куда меньшего количества правок, чем твой.

C3 ~ RET 20.04.2011 00:49

Всё верно, камрад. Я не говорил о скорости, я говорил о результативности. Как пел Тальков - "скорость нужна при ловле блох".

P. S. если вчитаться внимательно в то, о чем я пишу, то можно понять, что упомянутое тобой "переписывание" у меня проходит как "в случае использования", а PHP 5 сейчас почти везде и функции, им реализуемые, соответственно, доступны без заморочек.

Qwazar 20.04.2011 00:54

Цитата:

Сообщение от C3 ~ RET (Сообщение 16152)
Всё верно, камрад. Я не говорил о скорости, я говорил о результативности. Как пел Тальков - "скорость нужна при ловле блох".

P. S. если вчитаться внимательно в то, о чем я пишу, то можно понять, что упомянутое тобой "переписывание" у меня проходит как "в случае использования", а PHP 5 сейчас почти везде и функции, им реализуемые, соответственно, доступны без заморочек.

Это всё клёво конечно, я бы тоже советовал использовать prepeared statements, если бы проект писался бы с нуля, но в данном случае куда проще и удобнее, исправить баги по старинке. В данном случае, никаких преимуществ использование PDO не даст. (А времени у программиста отнимет порядочно)

C3 ~ RET 20.04.2011 01:02

Если человек задается вопросом обеспечения безопасности, то он понимает, что главное - результат. А не процесс. Очевидно, что переход на 5ую ветку (а я уверен, что 5ая ветка там уже) не представляет собой особых проблем (если это не так, то во-первых нет никакого смысла думать о фильтрации при наличии множества других ошибок в самом PHP 4, а во-вторых сам процесс миграции детально описан здесь - http://www.php.ru/manual/function.include/faq.migration5.html) и замена множества действий, таких как объявление переменной, приведение типа значения, проверка условия, вставка в запрос явно длиннее, чем задание переменной и использование ее в prepared statement

Qwazar 20.04.2011 01:02

При чём тут миграция? Я о том, что ему куда больше правок придётся вносить в код, при отсутствии каких либо значимых преимуществ.

C3 ~ RET 20.04.2011 01:04

Цитата:

Сообщение от Qwazar (Сообщение 16156)
При чём тут миграция? Я о том, что ему куда больше правок придётся вносить в код, при отсутствии каких либо значимых преимуществ.

См. мой пост выше, пор фаворе. Там сопоставлено кол-во строк в коде для фильтрации твоим способом "по-старинке", и при помощи альтернативного современного способа prepared statement.

Qwazar 20.04.2011 01:09

Цитата:

Сообщение от C3 ~ RET (Сообщение 16157)
См. мой пост выше, пор фаворе. Там сопоставлено кол-во строк в коде для фильтрации твоим способом "по-старинке", и при помощи альтернативного современного способа prepared statement.

Ладно, проехали. Ты о чём то другом разговариваешь.


Часовой пояс GMT +3, время: 18:31.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot