PHP sprintf() 취약점이 있는지는 잘 모르겠지만 예제 코드는 일을하지 않는 방법의 대표적인 예입니다.
내가 아는 한, sprintf는 문자열을 잠그는 데 도움이됩니다.
$sql = sprintf(
"insert into table (myname, myvalue) values ('%s', '%s')",
mysql_real_escape_string($_GET['name']),
intval($_GET['value'])
);
의 사촌을 빌려 sprintf를이다 사용하기 더 유용한 이유는, vsprintf 지속적으로 재사용 :
// takes variable number of parameters
function sanitize() {
$args = func_get_args();
$sql = array_shift($args);
foreach($args as $k => $v) $args[$k] = mysql_escape_string($v);
$safe_sql = vsprintf($sql, $args);
return($safe_sql);
}
예를 들어, 내가의 sprintf()를 사용하는 유용한 이유를 생각 하는데요 것입니다
그것으로, 당신은 안전하게 쿼리에서 매개 변수를 분리하고이 살균 것으로 가정 할 수 있습니다
$t = mysql_query(sanitize(
"insert into mytable (myname, myvalue) values ('%s', '%s')",
$_GET['name'],
$_GET['value']
));
글쎄, $ _GET [ 'format']에있는 % s의 개수가 인수의 개수와 일치해야합니다. 그렇지 않으면 인수 오류가 너무 적습니다. –