當我添加,編輯或刪除一個對象時,我使用的是URL中對象的id(pk),這當然會將該特定對象的全局主鍵ID暴露給用戶。我想用隱藏這些全球ID的URL和/或從一個窗體中隱藏的字段,而使用POST。隱藏主鍵或ID暴露
爲了讓它更清晰一點,讓我用一個例子來解釋一下。所以說,我有以下模型。
Models.py
class Profile(User)
# Some fields here
class Student(Profile)
# some fields here
class Teacher(Profile)
# Some fields here
class Project(models.Model)
student = models.ForeignKey(Student)
# some more fields here.
根據上述模型,說我要編輯或刪除現有Project
實例。我目前做的是使用id(pk)
作爲參數中的URL如下:
Urls.py
url(r'^project/(?P<id>\d+)/edit/$', 'app.views.edit_project'),
url(r'^project/(?P<id>\d+)/delete/$', 'app.views.delete_project'),
這將是要麼完全隱藏這些ID的URL中的最佳方法?
有沒有辦法讓每個學生都有項目ID?像添加另一個auto_increment
列到項目表?
你爲什麼覺得這會有用? –
對於我猜測的攻擊者來說是安全的嗎? ,我個人認爲公開揭露任何實體的主要關鍵字並不是一個好主意。 – Amyth
如果您的項目執行正確的授權,那麼誰看看主鍵將無法辨別出太多。 –