2013-04-11 52 views
-1

我有我自己的CMS,我正在探索我應該實施和研究的安全選項。PHP - 我的CMS安全

我所有的CMS頁面都基於Session中存儲的UserID檢查用戶權限。我在想,爲了「保護」這些頁面中的表單,它有多重要?我的意思是用戶有機會編寫SQL語句,所以如果他們想要使用SQL注入,它並不是真的那麼難...

所以我的想法是隻有登錄頁面安全+防止會話劫持,這是正確的還是我錯過了什麼?

首頁上的表格,查詢字符串等也是安全的。

謝謝你在這裏面的任何內容。

+1

按照表格定義「有保障」。我會寫一個通用的答案,當你的細節進來時,我會添加細節。 – 2013-04-11 10:59:01

+0

感謝您的真正快速輸入。我還沒有實現它,但在登錄頁面確保即時通訊思考轉義的html字符,引號和參數化SQL語句。我不太瞭解會話劫持,所以我需要了解這一點。我只是希望,如果我有登錄頁面安全+防止劫持它沒有辦法,有人可以訪問我的CMS頁面 - everysingle其中之一是檢查權限。 – Enn 2013-04-11 11:04:18

回答

0

保護網絡應用程序是一項永無止境的任務。人們通過工具和方法的組合,每天都可以找到可以利用的媒介(毫不誇張地說)。當建立一個CMS,你要特別小心:

  • 用戶能夠登錄爲別人他們是誰並不
  • 用戶能夠遠程注入永久到頁面中(尤其是當上面的組合)
  • 用戶能夠修改或提取他們不應該訪問

所有這些都與表單提交,或者更一般地,用戶數據錄入做數據庫的內容。它歸結爲一個簡單的規則:從來沒有有史以來信任用戶。

第一個你必須擔心的,也是最危險的是SQL注入。這是許多公司每年都會受害的原因,並且它非常深入,儘管大多數攻擊可以通過使用參數化查詢來阻止(TRUE參數化查詢。默認情況下,PDO模擬它們,有一個配置標誌可以打開真正的參數化)。這將有效地爲您執行大部分與SQL相關的清理工作,而將「明智的清理」留給您(即確保日期實際上是日期)。這可以保護您免受人們傾向於稱之爲一階SQL注入的影響 - 換句話說,就是直接輸入。

二階比較困難。它涉及在你的數據庫中存儲一些東西,然後在另一個語句中執行。指南對發生的事情有很好的想法。

這就是爲了打敗大多數腳本小子的SQL。

在內容過濾方面,您希望使用白名單方式而不是黑名單方式。刪除您不信任或無法識別的所有內容。在HTML方面,有一個叫做HTMLPurify的奇妙工具,可以完全實現這一點。

另外

不要讓我的老闆做錯了。立即檢查會話,而不是在控制器運行後呈現頁面之前。

+0

非常感謝您提供的信息。我一直在通過淨化文檔,我正在考慮使用它,但我決定不是否由於以下原因 - >用戶(我們更可能說編輯器,因爲只有編輯纔有機會這樣做)可以編寫html CMS Desk中的代碼(例如頁面佈局)。我的想法是,編輯/管理員可以做任何事情,他甚至可以通過點擊一下就刪除該網站。無論如何,如果編輯完全控制網站,使用html purify的原因是什麼? – Enn 2013-04-11 11:34:21