如何修改此代碼以改善對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);
?>
我也想知道如果我的數據庫連接可以改善。謝謝你的幫助!
<?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-method-for-sanitizing-user-input-with-php) –
老實說?改變整個代碼!在我看來,閱讀http://php.net/PDO和http://php.net/Filter更好,即使你必須使用php 5,正如Marc B已經提出的那樣。你的代碼看起來像在90年代,我很確定幾個小時的閱讀關於PHP編碼實踐。 –