이것은 적어도 약간 안전한 PHP 코드입니까?
-
09-09-2019 - |
문제
나는 긴 형식을 통해 전송되는 $ _post 변수가 있습니다. mysql_escape_string()
다음을해도 괜찮습니까? 이것이 실제로 안전하고/또는 실행 가능한 코드인지 모르겠습니다.
foreach ($_POST as &$post_item){
$post_item = mysql_escape_string($post_item);
}
나는 &를 사용하기 때문에 값이 아닌 참조로 전달하고 있기 때문에 실제로 $ _post의 값을 변경하고 있다고 확신합니다.
또한 사용해야합니다 mysql_real_escape_string()
대신에?
편집 : 위의 방법과 함께 PDO를 사용하고 ()을 사용하고 있습니다. 이것이 나를 위해 그것을 처리합니까?
해결책
사용하지 않는 이유 array_map()
?
array_map(mysql_real_escape_string, $_POST);
그러나 실제로 당신은 매개 변수화/준비된 진술을 사용해야합니다.
mysql_real_escape_string()
현재 데이터베이스 문자를 고려하여 mysql_escape_string()
하지 않습니다. 따라서 전자는 비교할 때 더 나은 대안입니다.
편집 (OP의 질문에 대한 편집 후) :
이미 PDO 준비된 진술을하고 있으므로 값을 수정할 필요가 없습니다. PDO는 모든 것을 처리합니다. 그것이 그 요점입니다.모든 데이터를 매개 변수로 넣는 경우 -SQL 문을 구축하기 위해 문자열을 연결하면 PDO가 있거나없는 재난으로 이어집니다). 값을 미리 도피하면 데이터베이스에서 값이도 피할 수 있습니다.
제휴하지 않습니다 StackOverflow