我應該不允許的字符,如」,「,>,<,\ ...在一個上傳表單文本字段中鍵入?文本將通過PHP被髮送到博客。不允許字符
我heared一些字符可能造成麻煩,並且可以用來「劈/傷害」服務器,這些服務器。字符應限制?
感謝您的輸入。 邁克爾
我應該不允許的字符,如」,「,>,<,\ ...在一個上傳表單文本字段中鍵入?文本將通過PHP被髮送到博客。不允許字符
我heared一些字符可能造成麻煩,並且可以用來「劈/傷害」服務器,這些服務器。字符應限制?
感謝您的輸入。 邁克爾
沒有必要限制任何東西。在問題是你必須消毒所有的用戶輸入;對於這種特定類型的數據(可能的HTML),在將所有用戶提供的數據顯示爲頁面的一部分之前,使用htmlspecialchars
是必要且足夠的。
例如,如果在窗體中有一個名爲post-body
textarea的,你應該接受用戶輸入(與$_REQUEST['post-body']
EG),並將其保存到你的數據庫,是(警告:使用mysql_real_escape_string
或PDO保護自己免受SQL在這個階段注射!)。到時候來顯示它,你會從數據庫中檢索,並與打印的東西像
echo htmlspecialchars($postBody);
見this question對數據的消毒一些背景。
用戶數據每次輸出用戶數據時都應該通過htmlspecialchars
函數進行消毒,以避免XSS-attacks。
另外,要在sql-queries中使用用戶數據,請使用PDO並準備好語句或mysql_real_escape_string
函數以避免SQL-injection。 Example。
感謝您的寶貴意見。 – Michael
<? $string = str_replace("\\\"", "\"", $string);
$string = htmlspecialchars($string);
$string = preg_replace("/\r\n|\n|\r/", "<br>", $string); ?>
<input type = "text" name = "string" id = "string" value = "<?=$string?>">
不要黑名單字符。將他們列入白名單。 –
對不起,這是什麼意思? – Michael
http://en.wikipedia.org/wiki/Whitelist –