2012-10-25 27 views
0

我正在使用cakephp 2.1,並且我寫了一些操作,如查看,編輯和刪除。 在url中,它看起來像'view/1','edit/1','delete/1',這樣我就可以更改url中的id。 我不想在url中更改它,它不應該允許編輯id。請幫我做到這一點。這項工作將更加明顯。CakePHP2.1刪除網址中的ID

+0

你能解釋一下自己嗎?所以你想在你的網址中沒有ID?爲什麼你不想在你的網址中使用ID?你關心安全嗎?或者你只是想讓你的網址看起來不錯? –

回答

0

好的......我想我理解你的問題。你擔心如果人們可以編輯這些ID,因爲它們在URL中是可見的,那麼這將是一個安全威脅?

首先,視圖操作:

您應該檢查在服務器端,如果用戶有權限與特定ID查看的記錄。如果他們不這樣做,那麼你可以給出一個錯誤。如果他們這樣做,那就讓他們看看 - 不要擔心他們是如何到達那裏的,不管他們是否在URL中編輯了ID。如果他們有權查看記錄,只需讓他們查看。

二,刪除操作:

同樣,就像視圖操作,你應該檢查在服務器端,看用戶是否有權限刪除的記錄。如果他們這樣做,那麼讓他們刪除它!如果他們編輯了URL中的ID,請不要擔心。如果用戶沒有刪除記錄的權限,那麼即使他們已經在URL中編輯了ID,您的服務器端檢查也會阻止它們。

三,編輯動作:

這稍微複雜一些,但還是很容易的。我假設你用HTML表單編輯記錄,並通過POST提交。好的,所以URL中的ID確定要提取和編輯哪個記錄。與查看和刪除一樣,您應該執行服務器端檢查以確保用戶有權編輯該項目。如果他們有權限,則返回表單。

表單加載後,瀏覽器中顯示的URL並不重要。表單提交的URL和表單提交的數據很重要。現在,默認情況下,編輯表單會將ID存儲在隱藏的輸入字段中。用戶可以更改該ID,從而更改正在編輯的記錄。

爲防止出現這種情況,請使用CakePHP的安全組件。你需要做的只是包含組件,CakePHP會在加載時自動在表單中加入一個哈希表,當表單提交時它會再次檢查。如果用戶編輯了隱藏的輸入字段,則此檢查將失敗,並且CakePHP將不允許編輯繼續。

請注意,要以這種方式使用安全組件,您必須使用CakePHP的表單助手(您可能已經是)來構建表單。

最後一點......有時候人們對於在數據庫中看到ID的人有點偏執 - 因此不希望他們在URL或其他地方顯示。但是,在幾乎所有情況下,關於身份證的內容都沒有任何「祕密」。誰看到他們並不重要。它們都是您的應用程序和數據庫的一種手段,用於識別記錄。只要你的應用程序是安全的,那麼你應該能夠向全世界展示你的所有ID,並且無需擔心。