Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于存储ID';HTML格式的(如票证ID、案例ID)_Javascript_Security - Fatal编程技术网

Javascript 关于存储ID';HTML格式的(如票证ID、案例ID)

Javascript 关于存储ID';HTML格式的(如票证ID、案例ID),javascript,security,Javascript,Security,这是一个通用的“好主意/坏主意问题” 我的场景:我正在编写一个ASP.NET MVC3应用程序,它只有一页(一个视图/控制器)。此视图显示一个“案例”网格,当用户单击其中一个案例时,我使用jquery ajax($.ajax)交换页面的可见部分,并加载此案例的详细信息(但从不更改页面) 还和我在一起吗?谢谢 现在,一旦显示了这个新的案例详细视图,用户可以通过多种方式之一编辑案例。更改优先级、更改状态等。我也使用jquery的ajax函数来实现这一点 我的问题:我应该如何存储案例ID?可以将其存储

这是一个通用的“好主意/坏主意问题”

我的场景:我正在编写一个ASP.NET MVC3应用程序,它只有一页(一个视图/控制器)。此视图显示一个“案例”网格,当用户单击其中一个案例时,我使用jquery ajax(
$.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的情况下获得它们,但我想把它扔到这里,看看其他聪明的程序员想出了什么。我感谢你的意见。