Django安全风险url参数

问题描述 投票:0回答:1

我试图找到一种方法来防止用户更改url参数和搞乱系统。我知道您可以限制用户只能访问正确的内容,但如果网址是

www.site.com/something/10

我在地址栏中将10更改为9,我可以访问工作流程未设计为访问权限的内容。我可以限制这个人不要看9,但它仍然提供了搞乱的东西的机会,我可能忽略了。

通过使用POST方法并隐藏参数,它将导致问题,因为django不是设计用于在一个视图中处理多个表单。

有没有办法让django显示出来

www.site.com/something/<Encrypted> or <Not recognisable so I can mess around>

必须有某种方式限制用户只能访问,无论当前页面上提供的链接是什么,而不是一个聪明的用户试图造成伤害。

django
1个回答
0
投票

你可以使用Django-encrypted-id,你可以做类似的事情

In [12]: e = ekey(Something.objects.first()) # Call this wherever you render a url

In [13]: e
Out[13]: 'bxuZXwM4NdgGauVWR-ueUA'

In [14]: get_object_or_404(Something, e) # Call this wherever you receive a request
Out[14]: <Something: thingy>

https://github.com/amitu/django-encrypted-id

但是我会建议另外编写测试以确保您没有忽略任何内容,并为您的所有视图编写权限类。由于人们仍然可以通过http发送网址或在共享网络上连接,并且如果这是唯一的安全措施,则会意外地让其他人访问他们不应该访问的内容。

© www.soinside.com 2019 - 2024. All rights reserved.