2009-08-03 36 views
42

我剛剛登陸了PHP5演出。我不會處理涉及超敏感數據的應用程序部分,但我仍然對安全和加密方法感到難堪。我只知道非常基礎(不要以明文存儲密碼,不允許用戶使用後期數據運行代碼等)。我需要知道什麼才能保證我的應用程序安全,並且我可以在哪裏學習?每個Web開發人員應該瞭解哪些加密技術?

+16

問題不應該是「每個Web開發人員應該瞭解哪些安全性」?加密只是你問題的一部分,對吧? – 2009-08-03 19:01:57

+9

nyylbharrqgbxabjnobhgrapelcgvbapnaorsbhaqguvegrrapunenpgrefnjnl – Instantsoup 2009-08-03 19:22:54

+0

ebg13vffghcvqnaqunfnofbyhgrylabcynprvanqvfphffvbapbirevatfrphevgl – NotMe 2009-08-05 01:09:57

回答

27

瞭解哈希和加密的區別。加密通常是對字符串的雙向解釋。我可以加密我的密碼,然後再解密爲明文。哈希背後的想法是,它們成爲單向的「加密」。

在我的網站上,我將密碼存儲爲散列。任何時候用戶登錄時,我都會重新提供他們提供的密碼,並根據存儲在數據庫中的散列進行測試,並批准它們是否匹配。如果他們忘記密碼,我不能發送他們的密碼,因爲(通常)我無法知道。兩個不同的字符串可以轉換爲相同的散列,這使得(通常)不可能找出原始字符串是什麼。

這是一個很好的理解和辨別何時使用加密和散列的問題。

0

首先,你必須讓這個PHP方法熟悉:

Here你在PHP的所有加密擴展。

+2

由於彩虹桌,md5和現在一樣好破。 – Macha 2009-08-03 19:22:05

+2

這有點誇大其辭。添加鹽和彩虹桌是沒用的。 – 2009-08-03 20:29:17

6

簡短的回答

你永遠不可能太安全

使用Salted中的密碼哈希以提高安全性

較長的答案(還沒有完成,雖然)

安全性不是網上快速教程學到的東西。它不僅需要深入瞭解存在哪些漏洞,而且還需要爲什麼存在,並且如何他們工作。最大的問題之一(尤其是在開源領域)是,新方法一直在增加,因此我們必須理解安全概念和理論。

閱讀書籍,上課並在本地機器上測試自己的漏洞。然後你會緩慢開始掌握如何保護Web應用程序的概念。

看看下面給您起步

  1. Developer's Guide to Web Application Security
  2. Web Security Testing Cookbook
  3. Applied Cryptography
11

無論你做什麼,它都可以被打破。

17

知道不要編寫自己的加密功能。現有的,可信任的圖書館是儘可能去的最佳途徑。避免使用酷炫,尖端的技術,缺乏許多成功的程序員時間和用戶時間。在第一人稱對自己進行全面測試之前,不要信任您選擇的功能。隨時瞭解可能會在一夜之間阻止您選擇的功能的新發展。要知道,僅僅因爲您使用的是當今最好的加密技術,如果您將密鑰放在桌面上,那麼您已經保護了任何內容(例如,明文不在緩存中或存儲在同一數據庫中的另一個表中,私鑰不是在打開左)

15
  • 瞭解encryptinghashing
  • 之間的差異瞭解原因salts
  • 理解HTTP是明文
  • 理解什麼是HTTPS是
  • 易懂nd你永遠不會(幾乎永遠不會)能夠創建比第三方庫和內置庫已經做得更好的散列或加密方法
3

請注意以下幾點當你存儲密碼,

  1. 散列密碼通常更安全,因爲您不必保守祕密。但是,它會阻止您在身份驗證流程中使用其他基於散列的方案。例如,您不能對哈希密碼使用HTTP摘要驗證。

  2. 簡單的散列很容易出現彩虹表攻擊(http://en.wikipedia.org/wiki/Rainbow_table)。請向散列中添加非重新分配的隨機數,或使用nonce作爲HMAC的密鑰。隨機數需要與密碼一起存儲。我將它添加到摘要中。

  3. 如果使用加密,請確保使用隨機初始向量,以便相同的密碼將被加密爲不同密碼的不同用戶。否則,你很容易發生模式匹配攻擊。 MySQL有內置的加密命令。它不會注入IV,因此不要將其用於密碼。

  4. 使用密文保存密鑰名稱/版本,以便可以旋轉密鑰。密鑰輪換是符合某些標準所必需的。當您不得不更改或旋轉按鍵時,無法解密密鑰信息的加密。

如果你遵循這些建議,你的密碼將是安全的任何加密/散列方案。

1

查看Open Web Application Security Project。他們有很多關於當前Web應用安全問題的信息,以及您需要採取什麼措施來抵禦這些問題。 OWASP正在編寫一個Development Guide,它提供了許多有關Web應用程序和Web服務開發問題的良好信息。

1

如果你從一個PHP背景下看它,我會推薦這本書:

alt text http://ecx.images-amazon.com/images/I/51sKhc8YUlL._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg

Pro PHP Security on Amazon

的事情,我真的很喜歡這本書是它涵蓋了更而不僅僅是PHP中與安全相關的功能列表。它的很大一部分涵蓋了一般的網絡安全概念和保護機制。權限,最小權限原則,加密,哈希,跨站點腳本,跨站請求僞造,會話劫持等都包含在這裏,以及使用PHP編寫安全代碼的示例。

在大學讀過研究生水平的安全課後,我對本書的報道印象深刻。我認爲它需要閱讀任何專業的PHP開發人員。

相關問題