localhost에 간단한 등록 양식 (아직 테스트 중)이 있는데 SQL 인젝션으로 공격받을 수 있는지 궁금합니다.등록 양식에 SQL 삽입 피하기
코드 :
$name = mysql_real_escape_string($_POST['name']);
$password = mysql_real_escape_string($_POST['password']);
$password = md5($password);
$email = mysql_real_escape_string($_POST['email']);
$refId = $_GET['refid'];
$ip = $_SERVER['REMOTE_ADDR'];
$add = mysql_query("INSERT INTO `users` (`name`, `password`, `email`, `refId`, `ip`)
VALUES('$name','$password','$email','$refId', '$ip')") or die(mysql_error());
가 안전 아니면 누군가가 (나는 방법을 알고 싶습니다) SQL 주입을 사용할 수 있습니까? 어떻게 주사를 피할 수 있습니까?
이미 읽었습니까? [읽었습니다.] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php) already? master 및 slave DB, 저장 프로 시저를 사용하고, 필요에 따라 자신의 함수로 문자열을 구문 분석하십시오. –
mysql_ 라이브러리를 사용하여 주입을 피하면 모든 단일 쿼리에 대해 지루한 작업이 필요합니다. 질의, 그리고 심지어 당신은 안전하다는 보장이 없습니다. 주입을 피하는 표준 방법은 준비된 쿼리를 사용하는 것입니다.이 준비 쿼리는 db 엔진에 전달한 문자열을 지정한 쿼리의 인수가 아닌 다른 것으로 처리하면 안됩니다. PHP에는 mysqli와 PDO를위한 두 개의 라이브러리가있다. 구글 그들과 준비된 쿼리를 읽어보십시오. 설정하는 데 조금 더 시간이 걸리지 만 그만한 가치가 있습니다. – octern
SQL 인젝션을 피하기 위해 저장 프로 시저가 필요하지는 않습니다. 준비된 진술은 가장 쉬운 접근법이거나 Doctrine이나 Propel과 같은 ORM입니다. – halfer