사용자 서식이 외부 웹 사이트로 전송되었으며 해당 웹 사이트의 응답에 고유 코드 (예 : "a87ju89y")가 포함되어 있습니다. 이 코드는 저에게 중요하며 준비된 문장을 사용하여 데이터베이스에 입력합니다. 백 엔드에 2 단계 SQL 삽입
나는 PHP 스크립트이 같은 새로운 코드가 있는지 확인하기 위해 데이터베이스를 쿼리 분마다 실행 cronjob에 있습니다$con = mysqli_connect($servername, $username, $password, $database);
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$results = mysqli_query($con, "SELECT user FROM stack ORDER BY ID");
$cronresults = mysqli_query($con, "SELECT run FROM kook ORDER BY ID");
$row = mysqli_fetch_assoc($results);
$cron = mysqli_fetch_assoc($cronresults);
$row2 = $row['user'];
$cron2 = $cron['kook'];
내 질문은 그게 내가 준비된 문을 필요가있다 단순히 정보를 가져 와서 일종의 SQL 인젝션을 막는 방법? 내가 어떻게하면 나는 그것에 대해 갈 것인가?
을 사용할 경우
LIMIT 1
추가 결과 다른 쿼리. 'select userdata from table' 다음에 'userdata from delete userid ='를 수행했다고 가정 해보십시오. $ row [ 'userdata']','userdata'가 id라고 기대하고 있지만 실제로는'0 or 1 = 1'을가집니다. 이제 모든 데이터가 사라질 것입니다. https://en.wikipedia.org/wiki/SQL_injection#Second_order_SQL_injection – chris85오케이, 이해해 주셔서 감사합니다! – electricjelly
거의 언제나 SQL에 값을 전달할 때 매개 변수가있는 쿼리를 사용합니다. 그냥 전달하지 마십시오. – chris85