Снятие экранизации слешей

Emeron

Новичок
Добрый день. Вопрос по отключению экранизации слешей. Думаю, многие знают о том, как убрать "магические кавычки", но как убрать "двойные" слеши? Я представляю это так:

PHP:
if( какой-то_параметр_включен )
{
  $str = stripslashes($_REQUEST["text"]);
}
Но что нужно проверять?
 

Emeron

Новичок
Хм. Спасибо, видимо, экранизирование связано с чем-то другим, т.к. "магические ковычки" со стороны пользователя я фильтровал - значит, будем искать ошибку в другом месте. И еще один вопрос. Стоит ли отключать magic_quotes_runtime и magic_quotes_sybase. И, если стоит, то хватит ли простого ini_set() в начале кода?
 

fixxxer

К.О.
Партнер клуба
Ну там же по ссылке все написано. :)

Отключать стоит всё, что портит тебе данные левыми слешами (это и magic_quotes_runtime касается, да, его достаточно отключить через set_magic_quotes_runtime()). Про функцию addslashes забыть как про страшный сон - тогда тебе все равно что там с sybase. Для работы с SQL надо использовать prepared statements или библиотеки с плейсхолдерами. Тем более что в php 5.4 всю эту порнографию с magic_ отправили на помойку, где оной давно и место.

Если где то лишние слеши отлаживай пошагово, они не должны появляться нигде, кроме как при подготовке запроса в sql библиотеке (а если используются prepared statements то вообще совсем нигде).
 

Emeron

Новичок
Хм, то есть, если отключить magic_quotes_runtime, то перед каждым MySQL запросом, к примеру, придется экранизировать спец. символы?
 

Фанат

oncle terrible
Команда форума
Хм, то есть, если отключить magic_quotes_runtime, то перед каждым MySQL запросом, к примеру, придется экранизировать спец. символы?
Фраза, в которой неправильно ВСЁ.

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

magic_quotes_runtime вообще никакого влияния на твои запросы, за очень редким исключением, не оказывает. Что включенная, что нет.
при этом, если даже использовать другую, более действенную настройку, то даже будучи включенной, она не будет являться гарантией от инъекции и в конечном итогеприведет тебя к взлому.

Если уж на то пошло, само по себе прослешивание вообще никакого отношения к инъекциям и защите от них не имеет. Там, где оно нужно, оно нужно и без инъекций. Там, где оно не нужно, оно не поможет от инъекций ни капли.

специальным образом обрабатывать данные перед помещением в запрос надо В ЛЮБОМ случае. причем делать это надо руками и головой, а не автоматом.

с двойными слешами-то ты разобрался?
 

Emeron

Новичок
Да, разобрался, была небольшая проблема с mysql_escape_string(), который был выполнен раньше времени. Также, протестировал работу "магических кавычек", поочередно меняя ту или иную настройку.
 
Сверху