2013-01-17 37 views
-1

我有一個問題表,該表的主鍵是「自動增量」的「ID」。 現在我正在創建一個管理問題的控制面板。控制面板中的一項功能是刪除問題。 現在我的問題是:我想把問題表的主鍵作爲HTML標籤的標識符發送給客戶端,這樣當用戶點擊HTML標籤刪除問題時,問題的主鍵就會發送到服務器進行刪除問題。在安全性方面是否危險?你有更好的解決方案嗎?我應該使用主鍵來確定要從表中刪除的記錄嗎?

+8

你的問題很難遵循,但如果歸結爲「我應該使用主鍵來確定要從表中刪除的記錄嗎?」那麼答案是「是」。至於安全性,服務器腳本有責任確定請求是由有效用戶進行的,並且該用戶有權刪除問題。 – GordonM

回答

2

如果您的問題涉及使用主鍵與其他任何唯一列集合來標識要刪除的記錄,則數據庫級別的安全性沒有區別。

例如,如果你有以下的表:

id - primary key 
subject - 
serial_number - 
... 
other fields 

subject + serial_number或每一行都是唯一的,它使你無論做

delete from table where id = '&id' 

與安全方面沒有差別

delete from table where serial_number = '&1' and subject = '&2' 

使用主鍵刪除可能很好b e更快。

但是,由於這個刪除操作是從一個html頁面觸發的,所以您肯定需要考慮如何保護頁面並防止意外刪除,但這與決定使用主鍵與其他字段無關刪除記錄。

1

看起來像你要使用

<a href="YOUR_URL_TO_DELETE/ID_TO_DELETE">YOUR_ANCHOR</a> 

主要問題thah我用這種方法遇到的是,每一個可以遵循的鏈接腳本可以在你的表中刪除記錄。考慮使用帶POST方法的表單,並在請求前向用戶顯示一個確認對話框。

+2

這個問題非常難以遵循,但我想它也可以歸結爲「我應該使用GET來改變狀態的操作嗎?」,答案「可能不是」。雖然HTTP規範不禁止改變服務器狀態的GET請求,但他們強烈地不鼓勵 – GordonM

2

每個請求都必須經過驗證,無論它是以HTTP,GET或POST還是Web服務調用的形式出現。

一個正確的網站需要防止依賴於IP地址跟蹤和請求頻率分析的機器人的保護;隱藏ID可能會阻止一些人編寫shell腳本來獲得一系列對象,但還有其他方式可以通過使用某種強力攻擊來利用網站。

ICQ ID很有價值,但僅僅是因爲它們與用戶有關,並且是用戶的主要識別手段;它是用戶身份驗證的獨一無二的方法,不會被任何其他服務,程序或網站使用。

結論是的,你需要擔心刮刀和DDOS攻擊,數據保護以及其他一些東西,但隱藏id不會很好地解決任何這些問題。

相關問題