2011-02-06 55 views
1

有人能給我一份我需要注意的事情清單嗎?到目前爲止,我只聽說過SQL注入和特殊字符。網站:用戶將文本輸入到字段中 - 我必須注意什麼?

那裏還有什麼,以及我需要採取哪些預防措施?爲了更具體一點,我使用AJAX和PHP作爲我的服務器端語言,MySQL使用我的數據庫系統。

謝謝。

+1

你真的應該閱讀代碼完成作爲一個新的程序員。它會給你一些關於這個話題的很好的建議。另外,請閱讀這篇文章http:// www。joelonsoftware.com/articles/Wrong.html的一些偉大的提示。 – jcolebrand 2011-02-06 01:49:17

回答

0

我不知道這是否回答你的問題,或者如果這是你正在尋找的答案,但我通常將所發佈的變量傳遞給mysql_real_escape_string,它會轉義所有特殊字符並防止注入。

1

首先,與數據庫交談:

您需要使用一種機制,防止SQL injection attacks通過輸入到數據庫;最可靠的機制是每當接受任何類型的用戶提供的輸入時總是使用parameterized queries

其次,將數據返回給用戶:

無論何時從數據庫中檢索用戶提供的數據,並將其打印到用戶,必須escape all HTML elements以防止用戶注入CSRFXSS或類似的攻擊給其他觀衆。

1

用戶輸入文本字段 - 我有什麼需要注意的?

絕對沒有!接受來自用戶輸入的任何和所有信息沒有問題。

問題是你如何處理這個輸入。一些想法:

  1. 連接用戶輸入以形成SQL查詢可能會導致SQL injection
  2. 將用戶輸入應用於固定長度的緩衝區可導致buffer overflows
  3. 將用戶輸入返回到HTML頁面可能導致cross site scripting
  4. 用作服務器上運行命令的一部分的用戶輸入可能會導致arbitrary command execution
  5. ...

你看,是絕對沒有,你需要關心用戶的輸入。相反,你需要確保用戶輸入不能被「注入」到你的服務器上做SQL,緩衝,HTML或命令執行。另外,您需要確保用戶輸入實際上符合您後端的類型規範(即,人們可以輕鬆地操縱輸入以將任何內容發送回服務器,這可能會導致在後端生成異常) 。最後,用戶可以頻繁操作參數來欺騙自己的身份,如果你不善鏈接客戶端請求到後端授權的交易。

+0

+1特別感謝包括任意命令執行,我忘記了一些應用程序嚴重依賴於外部命令。 – sarnold 2011-02-06 09:20:33

相關問題