簡體   English   中英

如何保證表格?

[英]How to secure a form?

我正在閱讀一篇關於表單安全性的文章,因為我有一個表單,用戶可以在其中添加消息。

我讀到最好使用strip_tags()htmlspecialchars()nl2br() 據說其他地方使用html_entity_decode()

我在我的頁面中有這個代碼,它接受用戶輸入

<?php 
    $topicmessage = check_input($_POST['message']); //protect against SQLinjection
    $topicmessage = strip_tags($topicmessage, "<p><a><span>");
    $topicmessage = htmlspecialchars($topicmessage);
    $topicmessage = nl2br($topicmessage);
?>

但是當我回復消息時,它全部在一行上,看起來這些斷點已被strip_tags刪除而不是被nl2br()放回去。

對我而言,這是有道理的,為什么它會這樣做,因為如果中斷被刪除,它如何知道將它放回去(或者它)?

無論如何,我正在尋找一種方法,我可以保護我的形式,用於嘗試和黑客網站,如在表單中使用JavaScript。

你有2個選擇:

  1. 絕對不允許HTML。 使用帶有NO允許標記的strip_tags()htmlspecialchars()來轉義可能存在於其中的任何標記。

  2. 允許HTML,但您需要清理HTML。 不是你可以用strip_tags做的事情。 使用庫(如HTMLPurifier )......

你只需要在打印表單內容之前需要htmlspecialchars,然后在發布到SQL之前使用mysql_real_escape(在打印之前不需要它),你應該很好。

采用自動標記方式非常危險,您需要使用有限屬性的允許標記的簡短列表 - 這不是您可以在一行中執行的操作。 您可能希望查看HTML規范化器,如Tidy。

  • 使用HTML Purifier進行html輸入並刪除你不想要的一切 - 除了段落,所有錨點等。

不相關但重要:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM