2010-11-05 85 views
1

我有1個主要網站,我想從iPhone應用程序的主要網站插入數據。在這種情況下,我想通過$ _GET插入數據,如果我這樣做,我應該採取哪些預防措施?其他解決方案?這會被稱爲API嗎?

回答

1

確保您採取預防措施,以防止SQL Injection Attacks, as described on the PHP documentation site

Wikipedia has good summary of Code Injection一般。

其他類型的注射,你應該特別關注作爲一個PHP開發人員將包括(但不一定侷限於):

  • 「shell命令注入」 - 見PHP's escapeshellarg()

  • 「包含文件注入」 - 避免包括文件的名字都直接從已提交的用戶數據產生。如果您必須這樣做,那麼解析該值,並強制包含的文件位於應用程序中的「安全」目錄中,其中不能找到其他敏感數據或非冪等腳本。

在互聯網上有很多的閱讀。花一些時間與谷歌追蹤並閱讀它。這些技術和關注點適用於所有語言和平臺 - 不僅僅是PHP - 因此您將始終使用您學習的信息。

祝你好運。

0

作爲一個快速的總結......想象一下,如果有人進入"1'; DROP TABLE users; --"。您的SQL查詢可能如下所示:"...WHERE id='1'; DROP TABLE users; --';"。 (SQL中的--是註釋 - 忽略它後的所有內容。)最終,他們會正確猜測您的某個表名,並且您已經失去了一切。或者他們可以做到這一點放「管理員」的用戶名外地和"password' OR 1=1; --"在密碼字段,導致一個查詢,看起來像這樣"SELECT * FROM users WHERE username='Administrator' AND password='pass' OR 1=1; --';"。當1 = 1總是評估爲真時,他們將能夠以他們想要的任何人登錄。

爲了避免這種情況,只爲你所有$_GET瓦爾做$password=mysql_real_escape_string($_GET['password'],$query_reference);