Django
为每个表自动生成了id字段,但这个问题跟Django联系不大。
假设有一个Article表
,包含主键
,那么我在url访问时直接使用该表的主键id
,从安全性和性能
方面考虑,这样好吗?比如说,Article表中有一条记录,id
为10051
,而网址http://example.com/article/10051
来显示该文章。
这样做能方便用户访问,因为知道某个文章的id,可以猜测其他文章的id来访问不同文章,但是直接把主键暴露在url中,会不会让黑客很容易能猜到数据库的结构从而引起安全方面
的问题。
这样的应用场景,有没有什么要注意的或者一般方案呢?
並沒有什麼不妥的地方。但是要考慮場景。例如
电商系统
中,如果查看訂單號,把自增主鍵暴漏了,那無疑是暴露了平台的銷售情況,給競爭對手來說無疑是絕佳的資料。但是至於安全方面卻沒有什麼值得注意的地方,無非還是防止注入什麼的。再例如多用戶部落格系統,暴漏id就無疑暴漏了平台的總註冊用戶數、總文章數、總發文、留言回覆數等。同樣也對安全沒有什麼影響。太少的資訊也不會引起猜測表結構
使用UUID。
如果是公開的問題不大的。但如果是涉及權限,例如 id A不能被用戶x 看到,那麼就需要注意,因為用戶可以透過改動id來跳到不同的文章(暫且這麼叫)
你的擔心,主要在防範駭客入侵上面。
為什麼不找這方面的資料?
例如: PPTP、L2TP、SSL、...?
來一次加隨機鹽的hash不就行了,隨機鹽直接明文保存在客戶端session裡就行了。