- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是我的情况:
我有一个从数据库中提取数据的搜索页面。显示的每条记录都附加了一个 key ,以便从该记录的数据库中提取数据。单击记录文档的链接时,使用 KO 数据绑定(bind)将此键添加到 URL,并将控制权传递给相应的 MVC Controller 。
这是我的问题:
该键显示在 URL 中。我不能允许这样。本网站的用户仅被允许访问某些记录。如果用户仅通过更改 URL 中键的最后一个或两个数字就能够看到任何记录,这是 Not Acceptable 。到目前为止,我想出的最佳解决方案是在处理搜索结果时使用 AES256 加密来加密每个 key ,然后在将加密传递给另一个 Controller 后解密。这很好用,除非我进入使用 HTTPS 的环境。我收到 400 个错误。
我是不是想多了?有没有办法使用 MVC 和 KO 完全屏蔽 URL 中的 key ?或者即使使用 HTTPS 也应该在 URL 中允许加密?
这里有一些例子来说明:
在不对我的代码进行任何更改的情况下,URL 的外观如下:
使用加密,我想出了这样的事情:
只要它适用于 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/
我的 MVC 布局中有以下内容(在底部): @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap") @Sc
我们正在做一个机器人项目,我们将使用相机(ArtCam 130MI)在 Ubuntu 12.04 上进行图像处理,该公司已终止对 Linux 的支持,但向我们发送了编译驱动程序的源代码,但在 load
这两个函数都允许替换/修改绑定(bind)上下文并将其应用于未绑定(bind)的节点。 “未绑定(bind)”表示我自己的自定义绑定(bind)想要使用这些有用的功能必须总是返回 { controls
我正在尝试使用计算来计算某些产品的总和。 function productViewModel(){ self = this; function productModel(data)
我正在尝试将 View 模型序列化为 JSON 以发送回我的服务器,但收到以下错误。 Uncaught Error: Pass a function that returns the value of
我有一个问题。请帮帮我。我有 ko.compulated,它有一个检查 ko.isObservable 变量,我需要 ko.compulated 不对这个变量的更改使用react。请参阅示例: ko.
两者都用于在 View 模型上应用 knockout 验证配置。这两种说法有什么不同? 谢谢 最佳答案 我看起来像配置是为了向后兼容,只是调用 init。 来自验证源( https://github.
ko.validation.group有什么区别和 ko.validatedObservable ?当我应该使用一种而不是另一种时,是否有特殊情况? 最佳答案 ko.validation.group只
我在尝试用 requirejs 很好地进行 knockout 时遇到了问题(从这里的帖子数量来看,其他人也是如此!)。我在这里读到的任何内容都没有遇到过这个问题。 以下是我的require配置: re
背景 Trevor 有一个简单的 knockoutjs 页面,包含三个声明的 ko.observable() 和一个声明的 ko.computed() 问题 Trevor 想删除第三个声明的项目。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我是knockout js的新手,我想将knockout.js与asp.net表单应用程序一起使用。我想使用 ajax 调用更新实体,如下所示 // Update product details
我使用 kogrid 显示数据,如下所示: 我的 knockout 虚拟机对 MVC Controller 进行 ajax 调用,以检索形状如下的 DTO: 我想将具有验证失败的值的单元格背景涂成红色
我在使用 KOgrid 时遇到两个问题。 1)我无法在kogrid中获取滚动条。没有滚动条很难进行数据输入。 2)如果不指定硬编码的高度和宽度,我也无法让 kogrid 工作。在我的应用程序中,我不能
我从加载的列表中获取一些数据并将它们添加到可观察数组中,我想将它们显示在另一个列表中,除了数据未显示在屏幕上之外,一切都会进行这是代码 self.addData = function (val) {
我有一个像这样的 ko maaaped 数组。 var Type = []; Type.push("Flip"); Type.push("Bar")
我有一些正在处理的代码是一个更大的预算应用程序的一部分。该位允许用户输入一些每周重复发生的费用,应用程序将根据输入计算每月总计。除了在编辑现有条目时更新表中的每月金额外,一切正常。删除功能会更新每月每
我得到: Uncaught TypeError: Cannot call method 'applyBindings' of undefined 我查看了 chrome 中的“网络”选项卡,发现已加载
我有一张 map ,其中有一个元素显示当前正在加载哪些图层。我在一个可移除的可观察数组中保存了一个层名称列表。加载新图层时,它们会按预期显示。当层完成加载时,它们将按预期移除,除了最后一个。即使调试显
我试图了解保持可观察函数或将其设置为对象之间的区别 我的可观察项目: self.SelectedItem = ko.observable(); 我的观点: @Html.Action("P
我是一名优秀的程序员,十分优秀!