2013-01-14 40 views
1

在我的登記表我有四個輸入:安全表單輸入需要哪些功能?

username 
password 
email address 
web address 

想不通所有可用的消毒方法關閉真正需要的:

strip_tags() 
substr() 
mysql_real_escape_string() 
trim() 
htmlentities() 
addslashes() 
. . . (you may add more) 

帶我發現一個函數是一個must have,某處這個函數被聲明爲deprecatedless valuable the another one ...

有人可以這麼友好地爲上面的所有四個輸入創建一個優先級列表。

注意:PDO - prepared statements已經用於與數據庫的通信。

+1

沒有銀子彈。在數據使用的方式上,您清理數據的方式僅取決於**。你需要什麼來淨化數據? – zerkms

+0

@zerkms,這是註冊表格。所以我需要輸入一個新的用戶數據庫,登錄等後來 – Alegro

+0

我沒有什麼補充。每件事都需要自己的消毒策略。如果你問一些更具體的東西,沒有「等」等,那麼我們可以回答。 – zerkms

回答

-5

首先,您需要明確說明您喜歡消毒的帽子。

由於您使用媒體鏈接prepared statements沒有必要: mysql_real_escape_string()

如果你想拒絕你的用戶使用HTML,避免XSS你也許應該使用 strip_tags()

爲了確保你的HTML顯示再次不可打印的字符 htmlentities() 但在UTF-8時代它的一點點obsolet。

對於密碼輸入,可以使用 trim() ,因爲如果您使用領先/連接空間複製密碼,它會有所幫助。 由於Outlook添加空格。但並不是每個人都認爲這是一個好主意,修剪密碼。

取決於你的模板系統,它可能是一個好主意,用 addslashes() 預定義的輸入值,像

<input type="text" value="<?php addslashes($value); ?>" /> 

,因爲它可能是可能做到:

my value " /><script>evil things</script>< 

要使自動完成表單中的某種XSS。

+0

GreenRover,非常感謝。對我來說非常有用。順便說一句,你有一個錯字'磁帶' - '類型' – Alegro

+1

'addslashes'是完全不相關的HTML。 – zerkms

+5

「對於密碼輸入,使用trim()是一個好主意,因爲如果你使用領先/連接空間複製密碼,它會有所幫助。」 ---這是** STUPID **的想法。密碼尤其應該保持不變 – zerkms

6

幾句話:

  1. 當您將數據添加到數據庫 - 使用PDO的佔位符準備語句。就是這樣,沒有其他要求。

  2. 當您從HTML頁面上的任何地方輸出的東西 - 你需要執行htmlspecialchars($string, ENT_QUOTES, 'UTF-8');,其中$string是字符串要在一個「安全」的方式輸出。

+0

zekerms,謝謝。我使用佔位符。你確定你答案的第一部分嗎? – Alegro

+2

@Alegro:不,我故意寫了一個錯誤的答案,因爲我喜歡寫錯誤的答案。你可以自由地從你的問題中添加10個更多的功能,讓你感覺更安全;-) – zerkms

+0

zerkms,也許你應該放鬆。感謝幫助。 – Alegro

相關問題