Пример был приведен в качестве демонстрации того, что в prepared statements все равно можно что-то протолкнуть, а не для демонстрации красоты синтаксиса
---------- Добавлено 05.06.2016 в 10:16 ----------
AVR55: я пришел к выводу: извращаться с хэшами, обфускацией, временем жизни хэша и прочее можно долго, но это вопрос терпения программиста, который захочет поломать мою систему. Причина проста - абсолютно всё, что выполняется в браузере, можно повторить через curl+интерпретатор js. То есть, эта задача нерешаема топологически.
Конкретно по ссылке задача тривиальная, решается введением доп. параметра - токена:
Т.к. secret известен только на сервере, то у третьей стороны нет возможности подделать токен, когда вызывается код со второй страницы, не выполнив код с первой страницы, т.е. исходная задача решена. Для защиты от повторного использования токена можно проверять timestamp, что не просрочен более чем на несколько минут.
---------- Добавлено 05.06.2016 в 06:15 ----------
AVR55: абсолютно всё, что выполняется в браузере, можно повторить через curl+интерпретатор js
hitboss: сертификат не защитит от подмены ДНС, например, когда посетителя кидают на другой сайт, его браузер не знает, какой сертификат верный, и принимает любой.
Во-первых PDO эмулирует prepared statements по крайней мере для MySQL. Это позволяет делать такие вещи, как:
$pdo->query('SET NAMES gbk'); $var = "\xbf\x27 OR 1=1 /*"; $query = 'SELECT * FROM test WHERE name = ? LIMIT 1'; $stmt = $pdo->prepare($query); $stmt->execute(array($var));
В результате исполнится запрос SELECT * FROM test WHERE name = '縗' OR 1=1 /*' LIMIT 1
Кроме того, уязвимости не ограничиваются SQL-инъекциями.
Да и в месяц многовато
Так удобнее
Пример был приведен в качестве демонстрации того, что в prepared statements все равно можно что-то протолкнуть, а не для демонстрации красоты синтаксиса
---------- Добавлено 05.06.2016 в 10:16 ----------
Мда, старею, - привык любые входящие параметры проверять,
никаких инъекций гарантированно.
Из-за этого девушки страдают
я пришел к выводу: извращаться с хэшами, обфускацией, временем жизни хэша и прочее можно долго, но это вопрос терпения программиста, который захочет поломать мою систему. Причина проста - абсолютно всё, что выполняется в браузере, можно повторить через curl+интерпретатор js. То есть, эта задача нерешаема топологически.
Конкретно по ссылке задача тривиальная, решается введением доп. параметра - токена:
token = timestamp + ';' + sha1(timestamp + secret)
Т.к. secret известен только на сервере, то у третьей стороны нет возможности подделать токен, когда вызывается код со второй страницы, не выполнив код с первой страницы, т.е. исходная задача решена. Для защиты от повторного использования токена можно проверять timestamp, что не просрочен более чем на несколько минут.
---------- Добавлено 05.06.2016 в 06:15 ----------
абсолютно всё, что выполняется в браузере, можно повторить через curl+интерпретатор js
Нельзя, например CSS :)
сертификат не защитит от подмены ДНС, например, когда посетителя кидают на другой сайт, его браузер не знает, какой сертификат верный, и принимает любой.
Это так только для пользователей, ранее не посещавших этот сайт. Если использовать certificate pinning, то не пустит: https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning. Без сертификата тоже не пустит: https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
Во-первых PDO эмулирует prepared statements по крайней мере для MySQL. Это позволяет делать такие вещи, как:
В результате исполнится запрос SELECT * FROM test WHERE name = '縗' OR 1=1 /*' LIMIT 1
Кроме того, уязвимости не ограничиваются SQL-инъекциями.
Сейчас только на год... закрутили гайки китайцы...
Только что получил на 4 поддомена на три года и 5 поддоменов на 2 года. Где гайки?
Суть в том, что при мобильном подключении к wap запросам провайдер добавляет HTTP заголовки с номером абонента.
Кто-то может подсказать как вывести такие графики (неделя, сутки) на своем vps? OS Debian.
munin попробуйте, проще всего. плюс аппа для андроида есть
А что не так? Запас по ресурсам есть.
а что значит что-то понимать? :)
https://ru.wiktionary.org/wiki/%D1%8D%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D1%82
https://ru.wiktionary.org/wiki/%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D1%81%D1%82