previous question I had posted에 대한 응답으로 데이터베이스를 SQL 주입으로 열었다는 응답이있었습니다.SQL 주입을 방지하기 위해 수행해야하는 단계는 무엇입니까?
이<?php
$firstname = stripslashes(strip_tags($_POST['firstname']));
$lastname = stripslashes(strip_tags($_POST['lastname']));
$email = stripslashes(strip_tags($_POST['email']));
$title = stripslashes(strip_tags($_POST['title']));
$organization = stripslashes(strip_tags($_POST['organization']));
$pdbHost = "localhost";
$pdbUserName = "******";
$pdbPassword = "******";
$pdbName = "db1080824_emails";
// Connect to mySQL
$conlink = mysql_connect($pdbHost, $pdbUserName, $pdbPassword);
if(!$conlink) {die('Unable to connect to '.$pdbHost);}
if (!mysql_select_db($pdbName, $conlink)){die('Cannot find database '.$pdbName);}
//SQL query
$SQL2="INSERT INTO `db1080824_emails`.`emails` (`record_id` ,`firstname`,`lastname`,`email`,`title`,`organization`)VALUES (NULL , '".$firstname."', '".$lastname."', '".$email."', '".$title."', '".$organization."')";
mysql_query($SQL2);
// Connect to Closing the connection
mysql_close($conlink);
?>
제안 내가위한 서버 측 유효성 검사를 할 수 있었다 '/가^[A-ZA는-Z0-9] /'일어날 수없는 SQL 인젝션 없도록하지만 충분한 것입니다 : 코드는 아래와 같습니다 아니면 데이터 위생을 보장하기 위해 따라야 할 모범 사례가 있습니까?
http://en.wikipedia.org/wiki/SQL_injection을 - 더 읽어 어떻게 이루어집니다 및 호 w를 "실행 취소" – Joseph
준비된 진술 만 사용하십시오. 기간. – knittl
첫 번째 단계 : ** mysql_query ** 사용을 중단하고 PDO 또는 mysqli와 같은 최신 API를 사용하십시오. 둘 다 준비된 문을 지원합니다. SQL 문을 제대로 사용하면 SQL 주입을 방지하는 데 많은 도움이됩니다. – cHao