要避免網頁輸入欄位的SQL injection,基本的方式是針對輸入欄位、POST、GET..
等數值進行處理。
htmlentities():去除字串中的html標籤
stripslashes():讓文字及符號呈現原始輸入的文字,不受html語法影響
real_escape_string():轉換特殊符號
可參考以下範例試試看:
<html>
<form action="trail_string_clear.php" method="post" name="textform">
原始輸入<br>
<textarea id="editor1" name="inputtext" type="textarea" style="width:400px;height:200px;"></textarea><br>
<input class="form_submit" type="Submit" value="Submit"></input>
</form>
</html>
<?php
require_once("fundation_func.php");
$link = new mysqli($dbhost,$dbuser,$dbpass,$db);
$inputtext=$_POST['inputtext'];
$stripslashes=htmlentities($inputtext);
$htmlentities=stripslashes($inputtext);
$real_escape_string=$link->real_escape_string($inputtext);
echo "<font color='black'>未處理字串:$inputtext<br></font>";
echo "<font color='blue'>stripslashes處理後:$stripslashes<br></font>";
echo "<font color='red'>htmlentities處理後:$htmlentities<br></font>";
echo "<font color='green'>real_escape_string處理後:$real_escape_string<br></font>";
?>
輸出畫面:
輸入的字串
沒有留言:
張貼留言