2020年6月14日 星期日

PHP- 預防SQL injection 字串處理"htmlentities"、"stripslashes"、"real_escape_string"

要避免網頁輸入欄位的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>";
?>



輸出畫面:


輸入的字串





沒有留言:

張貼留言