찾다

 >  Q&A  >  본문

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

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

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

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

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

黄舟黄舟2838일 전745

모든 응답(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는 사용자가 볼 수 없습니다.

    회신하다
    0
  • 伊谢尔伦

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

    귀하의 걱정은 주로 해커의 침입을 방지하는 것입니다.
    이에 대한 정보를 찾아보는 것은 어떨까요?
    예: PPTP, L2TP, SSL,...?

    회신하다
    0
  • 阿神

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

    해시에 임의의 솔트를 추가하기만 하면 임의의 솔트를 일반 텍스트로 클라이언트 세션에 직접 저장할 수 있습니다.

    회신하다
    0
  • 취소회신하다