搜尋

首頁  >  問答  >  主體

python - 把主键暴露在URL中是好的选择吗?

Django为每个表自动生成了id字段,但这个问题跟Django联系不大。

假设有一个Article表,包含主键,那么我在url访问时直接使用该表的主键id,从安全性和性能方面考虑,这样好吗?比如说,Article表中有一条记录,id10051,而网址http://example.com/article/10051来显示该文章。

这样做能方便用户访问,因为知道某个文章的id,可以猜测其他文章的id来访问不同文章,但是直接把主键暴露在url中,会不会让黑客很容易能猜到数据库的结构从而引起安全方面的问题。

这样的应用场景,有没有什么要注意的或者一般方案呢?

黄舟黄舟2848 天前749

全部回覆(6)我來回復

  • PHP中文网

    PHP中文网2017-04-17 15:16:17

    並沒有什麼不妥的地方。但是要考慮場景。例如电商系统中,如果查看訂單號,把自增主鍵暴漏了,那無疑是暴露了平台的銷售情況,給競爭對手來說無疑是絕佳的資料。但是至於安全方面卻沒有什麼值得注意的地方,無非還是防止注入什麼的。再例如多用戶部落格系統,暴漏id就無疑暴漏了平台的總註冊用戶數、總文章數、總發文、留言回覆數等。同樣也對安全沒有什麼影響。

    回覆
    0
  • 黄舟

    黄舟2017-04-17 15:16:17

    太少的資訊也不會引起猜測表結構

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:16:17

    使用UUID。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:16:17

    如果是公開的問題不大的。但如果是涉及權限,例如 id A不能被用戶x 看到,那麼就需要注意,因為用戶可以透過改動id來跳到不同的文章(暫且這麼叫)

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 15:16:17

    你的擔心,主要在防範駭客入侵上面。
    為什麼不找這方面的資料?
    例如: PPTP、L2TP、SSL、...?

    回覆
    0
  • 阿神

    阿神2017-04-17 15:16:17

    來一次加隨機鹽的hash不就行了,隨機鹽直接明文保存在客戶端session裡就行了。

    回覆
    0
  • 取消回覆