이 코드를 수정하여 SQL 인젝션 및 기타 위협으로부터 어떻게 보호 할 수 있습니까? 이것은 MS SQL 데이터베이스입니다.SQL 인젝션 및 기타 위협으로부터 PHP 코드를 개선하는 방법
<?php include_once("db.php"); ?>
<?php
$id = $_REQUEST['id'];
settype($id, 'string');
$tsql = "SELECT Table1.Fund FROM Table1 WHERE Table1.Fund='%s'";
$tsqlnew=sprintf($tsql, $id);
$stmt = sqlsrv_query($conn, $tsqlnew);
if($stmt === false)
{
echo "Error in query preparation/execution.\n";
die(print_r(sqlsrv_errors(), true));
}
$chd = '';
while($data = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
$chd .= '[\''.$data['Fund'] .'\'],';
}
$chd = substr($chd,0,-1);
?>
내 DB 연결을 개선 할 수 있는지 궁금합니다. 당신의 도움을 주셔서 감사합니다!
<?php
$myServer = "server";
$myUser = "userPlaceHolder";
$myPass = "passwordPlaceHolder";
$myDB = "SQL";
$conn = sqlsrv_connect($myServer, array('UID'=>$myUser, 'PWD'=>$myPass, 'Database'=>$myDB));
if($conn === false)
{
echo "Could not connect.\n";
die(print_r(sqlsrv_errors(), true));
}
?>
$ _REQUEST [ 'id']이 입력 필드에서 오는 것으로 가정합니다. mysql_real_escape_string 함수를 사용하여 문자열에서 특수 문자를 스케치하십시오. http://php.net/manual/en/function.mysql-real-escape-string.php – B4NZ41
가능한 복제본 [PHP로 사용자 입력을 살균하는 가장 좋은 방법은 무엇입니까?] (http://stackoverflow.com)/questions/129677/whats-the-best-sanitizing-user-input-with-PHP) –
솔직히? 전체 코드를 변경하십시오! 필자가 생각하기에, 이미 제안 된 마크 B가 PHP 5를 사용해야 할지라도 http://php.net/PDO와 http://php.net/Filter에 대해 읽는 것이 훨씬 낫다. 귀하의 코드는 90 년대와 비슷하게 보입니다. PHP 코딩 사례를 읽는 데 몇 시간의 시간이 걸릴 것 같습니다. –