我目前正在爲我的應用程序設置php腳本,並且我對於如何獲得安全級別以防止注入sql服務器提供了一點幫助。用戶輸入php的sql保護
有幾個腳本從應用程序接收輸入,而不是直接從用戶接收輸入,例如內容瀏覽和內容分級,但最終它是輸入。
,做接收用戶直接輸入爲「name
」和「creator name
」的劇本是這樣的:
$utc_str = gmdate("M d Y H:i:s", time());
$TIMESTAMP = strtotime($utc_str);
$DATA = $_POST['DATA'];
$NAME = $_POST['NAME'];
$CREATOR = $_POST['CREATOR'];
if(strlen($NAME) > 15 || strlen($CREATOR) > 15) exit("Error 2");
$stmt = $connect->prepare("INSERT INTO `ugcl` (`DATA`,`NAME`,`CREATOR`,`CREATEDSTAMP`)
VALUES (?, ?, ?, ". $TIMESTAMP .")");
$stmt->bind_param("sss", $DATA, $NAME, $CREATOR);
if($stmt->execute())
{
echo "Successs";
}
else
{
echo "Error";
}
我應該使用在所有接收輸入的腳本綁定PARAMS? 還有其他建議嗎?
如果(preg_match(「/^[a-zA-Z0-9] + $ /」,$ str)== 1),您可以這樣做以增加安全性// string只包含a到z, A到Z,0到9 } –
@IlayaRajaS這只是限制數據庫可以採取的數據。應該使用參數化查詢,這是不必要的。 – chris85
綁定到您的SQL查詢的所有值。輸出值時還要考慮XSS注入。 'bind_param'是一個mysqli函數,你是否在'sql server'中使用'mysqli'? – chris85