Javascript 关于存储ID';HTML格式的(如票证ID、案例ID)
这是一个通用的“好主意/坏主意问题” 我的场景:我正在编写一个ASP.NET MVC3应用程序,它只有一页(一个视图/控制器)。此视图显示一个“案例”网格,当用户单击其中一个案例时,我使用jquery ajax(Javascript 关于存储ID';HTML格式的(如票证ID、案例ID),javascript,security,Javascript,Security,这是一个通用的“好主意/坏主意问题” 我的场景:我正在编写一个ASP.NET MVC3应用程序,它只有一页(一个视图/控制器)。此视图显示一个“案例”网格,当用户单击其中一个案例时,我使用jquery ajax($.ajax)交换页面的可见部分,并加载此案例的详细信息(但从不更改页面) 还和我在一起吗?谢谢 现在,一旦显示了这个新的案例详细视图,用户可以通过多种方式之一编辑案例。更改优先级、更改状态等。我也使用jquery的ajax函数来实现这一点 我的问题:我应该如何存储案例ID?可以将其存储
$.ajax
)交换页面的可见部分,并加载此案例的详细信息(但从不更改页面)
还和我在一起吗?谢谢
现在,一旦显示了这个新的案例详细视图,用户可以通过多种方式之一编辑案例。更改优先级、更改状态等。我也使用jquery的ajax函数来实现这一点
我的问题:我应该如何存储案例ID?可以将其存储在HTML中吗?有更好的地方存放吗
所有案例都有一个Guid ID,当前在加载案例详细信息时(使用ajax),我向案例详细信息视图
添加了一个自定义属性,因此我知道案例ID。这意味着查看页面源代码的任何人都可以看到案例ID。我考虑使用jQuery的.data()函数来存储它,这对于页面源代码来说是不可见的,但是可以从Firebug的其他检查器工具中访问
这方面的最佳做法是什么?我真的无法想象我的用户会如何使用案例ID做任何事情,但我试图在这里表现得有点偏执
提前感谢您的任何想法!谢谢你读这本小说 通过将案例ID从服务器发送到浏览器,您将其提供给用户。如果您不希望用户拥有案例ID,请不要将其发送到浏览器。通过将案例ID从服务器发送到浏览器,您就是将其发送给用户。如果您不希望用户拥有案例ID,请不要将其发送到浏览器。对于浏览器以任何方式看到的内容,您几乎无能为力,因为DOM中的代码和数据不会受到用户的保护 显然,您不希望向不允许查看该信息的用户发送任何信息,因此您不希望对依赖于用户角色的数据进行任何客户端筛选
但是对于内部数据,您只需要保护您的外围环境-方法不能接受不匹配的id(即,仅对提交的不同客户有效的帐户id)-但是对于ID本身,您几乎无能为力。对于浏览器以任何方式看到的内容,您几乎无能为力,因为DOM中的代码和数据不受用户保护 显然,您不希望向不允许查看该信息的用户发送任何信息,因此您不希望对依赖于用户角色的数据进行任何客户端筛选
但是对于内部数据,你只需要保护你的周界-方法不能接受不匹配的id(即只对提交的不同客户有效的帐户id)-但是你对id本身几乎无能为力。如果你担心的话,我会提供某种经过消毒的“假想”id。如果这是在循环中运行的,我建议基于循环索引 但是,最终,您需要在案例中使用某种唯一标识符,以便在对数据库的ajax调用中识别它
实际上,我以前也做过同样的事情,只是在标记中对ID字段进行了编码,这几乎不重要。如果你的安全措施松懈,这个ID只是一个公开的有害的东西。如果你已经保护了你的数据库,并且在应用程序上有相当高的安全级别,那么你应该没事。如果你没有,那么你就有比标记更重要的事情要担心。如果你这么担心的话,我会提供一些经过消毒的“虚构”ID。如果这是在循环中运行的,我建议基于循环索引 但是,最终,您需要在案例中使用某种唯一标识符,以便在对数据库的ajax调用中识别它
实际上,我以前也做过同样的事情,只是在标记中对ID字段进行了编码,这几乎不重要。如果你的安全措施松懈,这个ID只是一个公开的有害的东西。如果你已经保护了你的数据库,并且在应用程序上有相当高的安全级别,那么你应该没事。如果你没有,那么你就有比加价更重要的事情要担心。谢谢Rob。我感谢你的意见。了解哪一个案例正在更新的好方法是什么?也许是其他伪造的身份证?因为我从不更改页面,所以我不能在控制器中真正更改页面。我需要JavaScript来告诉我的控制器更改优先级/状态的情况。谢谢Rob。我感谢你的意见。了解哪一个案例正在更新的好方法是什么?也许是其他伪造的身份证?因为我从不更改页面,所以我不能在控制器中真正更改页面。我需要JavaScript来告诉我的控制器要更改哪个案例的优先级/状态。谢谢案例。我认为没有“神奇”的方法可以在不向用户公开这些Id的情况下获得它们,但我想把它扔到这里,看看其他聪明的程序员想出了什么。我很感谢你的意见,谢谢你。我认为没有“神奇”的方法可以在不向用户公开这些Id的情况下获得它们,但我想把它扔到这里,看看其他聪明的程序员想出了什么。我感谢你的意见。