Что ж, если вы собираетесь просто имитировать это поведение, используя некоторые символы, такие как% d, $ s, для представления ваших данных, без реализации какого-либо базового метода , это, очевидно, НЕ безопасно.Символы% d и $ s не имеют магического значения, что делает любые данные безопасными.
Если вы собираетесь использовать библиотеку , вы столкнетесь и хотите спросить, безопасна ли эта библиотека илинет, вы должны хотя бы назвать это, но лучше представить технологию , которую она использует, чтобы дать людям представление о том, что вы просите.
Хорошо, это все о символах.
Как я уже говорил выше, либо если вы имели в виду %s
, а не $s
, это просто заполнители функций printf () и не имеют никакого отношения ни к безопасности, ни к базам данных.
Тем не менее, вы все еще можете создать систему безопасности, реализующую такие заполнители, которые, конечно, должны избегать | связывать эти параметры на своем базовом уровне.
краткий пример такой функции:
function prepare() {
$args = func_get_args();
$query = array_shift($args);
foreach ($args as $key => $val) {
$args[$key] = mysql_real_escape_string($val);
}
return vsprintf($query, $args);
}
, используя ее таким образом
$sql = $dbh->prepare("INSERT INTO whatever (col1,col2) values (%d,'%s')",
$_GET['unescaped_and_unfiltered_col1_value'],
$_GET['unescaped_and_unfiltered_col2_value']);
, вы можете быть уверены, что сделали ваши значения данных безопасными.И все же идентификаторы и ключевые слова стали нуждаются в защите.
Надеюсь, я разобрался со всеми вещами.