gpt4 book ai didi

c# - 使用 C#、MVC 3 和 KO 更改 URL 参数

转载 作者:可可西里 更新时间:2023-11-01 13:14:29 24 4
gpt4 key购买 nike

这是我的情况:

我有一个从数据库中提取数据的搜索页面。显示的每条记录都附加了一个 key ,以便从该记录的数据库中提取数据。单击记录文档的链接时,使用 KO 数据绑定(bind)将此键添加到 URL,并将控制权传递给相应的 MVC Controller 。

这是我的问题:

该键显示在 URL 中。我不能允许这样。本网站的用户仅被允许访问某些记录。如果用户仅通过更改 URL 中键的最后一个或两个数字就能够看到任何记录,这是 Not Acceptable 。到目前为止,我想出的最佳解决方案是在处理搜索结果时使用 AES256 加密来加密每个 key ,然后在将加密传递给另一个 Controller 后解密。这很好用,除非我进入使用 HTTPS 的环境。我收到 400 个错误。

我是不是想多了?有没有办法使用 MVC 和 KO 完全屏蔽 URL 中的 key ?或者即使使用 HTTPS 也应该在 URL 中允许加密?

这里有一些例子来说明:

在不对我的代码进行任何更改的情况下,URL 的外观如下:

https://www.website.com/Controller/Method/1234

使用加密,我想出了这样的事情:

https://www.website.com/Controller/Method/dshfiuij823o==

只要它适用于 HTTPS,它就可以正常工作。

无论哪种方式,我都需要对 URL 中的 key 进行加扰处理或将其删除。或者确定一种在每次调用 Controller 时不使用键运行搜索的方法。

谢谢大家的帮助。

最佳答案

除非我在这里遗漏了一些非常明显的东西,否则你不能在网络服务端检查登录用户是否对记录有正确的权限,如果没有,就不要显示记录?

理想情况下,这应该在搜索级别完成,这样用户就不会看到任何他们无法访问的文件。即使他们更改了浏览器中的 key ,他们仍然无法访问。

如果没有成员(member)系统,那么如果您真的想让您的站点安全,就需要实现一个。否则,你就是在玩火。否则,您将需要将文档设置为“公开”或“私有(private)”,其中仍需要进行数据库级别的更改。

编辑

如果您真的需要让您的 ID 不可猜测,请不要加密它们,选择更简单的方法并在您的数据库级别为它们创建 GUID。然后您的 URL 将包含 GUID 而不是加密 key 。由于您不必在每次调用时都加密/解密记录 ID,因此效率会高很多。

然而,这仍然不是 100% 安全的,我怀疑能否通过 PCI 数据安全检查,因为人们仍然可以从查询字符串中查看(并复制/粘贴)GUID,就像使用加密字符串一样容易。实际上,您需要一个完全合规的成员(member)系统。

关于c# - 使用 C#、MVC 3 和 KO 更改 URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12978095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com