Servlets 数据库和前端耦合的风险

Servlets 数据库和前端耦合的风险,servlets,web,frontend,backend,coupling,Servlets,Web,Frontend,Backend,Coupling,我想不出更好的题目了,看完这个问题后,你可以提出一个更好的题目。你也可以推荐一些更好的标签,我找不到web开发 我是一名学生,所以我不知道实现以下问题的标准方法 我通常根据数据库主键设置元素(div、span、tr等)的ID,以便于以后参考。 例如,在页面上,将某些条目行的id设置为数据库中的sno(这是主键),然后单击检查id的任何行,并使用该id显示来自数据库的结果 但我认为这是一个坏主意,因为任何人都可以使用检查元素或开发工具并更改ID 实现这一目标的标准方法是什么 编辑1 我知道web浏

我想不出更好的题目了,看完这个问题后,你可以提出一个更好的题目。你也可以推荐一些更好的标签,我找不到
web开发

我是一名学生,所以我不知道实现以下问题的标准方法

我通常根据数据库主键设置元素(div、span、tr等)的ID,以便于以后参考。

例如,在页面上,将某些条目行的id设置为数据库中的sno(这是主键),然后单击检查id的任何行,并使用该id显示来自数据库的结果

但我认为这是一个坏主意,因为任何人都可以使用检查元素开发工具并更改ID

实现这一目标的标准方法是什么

编辑1

我知道
web浏览器不会为我强制执行安全策略
这就是为什么我要求使用标准方法或标准实践来解决这个问题。

无论如何,您必须假设任何来自后端的请求都可能是伪造的,发送到浏览器的任何数据(可见或隐藏)都是公开的

如果您认为
id
是私有的(非常罕见的要求),那么您可以简单地使用行顺序,并在服务器会话中保持表
行顺序
id

如果您只是想确保id是正确的,只需在更新数据库之前控制它们(服务器端),或者在写入数据库时控制它们(如果以前无法控制它们)


如果您想要强制执行任何其他策略(用户有角色,并且根据角色允许或不允许更新某些值),所有这些控制都必须在服务器端执行。

不要期望web浏览器强制执行您的安全策略-在中间件或数据层中解决这些问题的正确位置。假设有恶意用户能够制造任何你的服务器能够响应的HTTP请求(有,而且他们会)。如果你需要在文档和数据元素之间进行深度集成,考虑在浏览器端创建一个数据层,并使用普通的JavaScript属性映射到视图。否则,使用文档ID是可以的。@BadZen抱歉,我不知道如何在浏览器端创建数据层。您是否知道一些博客、Wiki或任何我可以进一步了解它的网站?如果您想为您的标题提供更具体的主题(因为通用性在这方面不太受欢迎),你的文章是关于你的数据库和前端有多近。因此,您可以重命名为“数据库和前端耦合的风险”@BadZen在浏览器端的数据层可能意味着用一些Javascript来维护浏览器中的数据层。因此,您可以从HTML元素中提取ID,并将其转移到Javascript中。但即便如此,攻击者也可以继续使用Javascript。因此,验证ID是否正确和有效的最佳位置是在后端(如BadZen所示的中间件或数据层)。如果您有前端与之通信的web服务,您可以在那里验证它,并在未经授权访问资源时返回错误响应。