【发布时间】:2014-09-22 03:41:46
【问题描述】:
我想不出更好的标题,阅读问题后您可以提出更好的标题。你也可以推荐一些更好的标签,我找不到web-development。
我是一名学生,所以我不知道实现以下问题的标准方法。
我通常根据数据库主键设置元素的ID(div、span、tr等),方便以后引用。
例如,在页面上有一些条目的 id 设置为数据库中的主键 sno,然后单击任何行检查 id 并使用该 id 显示来自数据库的结果。
但我认为这是个坏主意,因为任何人都可以使用 Inspect Element 或 Dev Tools 并更改 ID。
实现这一目标的标准方法是什么?
编辑 1
我知道web browser wont enforce the security policy for me 这就是为什么我要求使用标准方式或标准做法来解决这个问题。
【问题讨论】:
-
不要指望 Web 浏览器强制执行您的安全策略 - 解决中间件或数据层中这些问题的正确位置。假设有恶意用户能够制作您的服务器能够响应的任何 HTTP 请求(有,而且他们会)。
-
也就是说,如果您需要在文档和数据元素之间进行深度集成,请考虑在浏览器端创建数据层并使用普通的 javascript 属性映射到视图。否则,使用文档 ID 就可以了。
-
@BadZen 抱歉,我不知道
creating a data layer on the browser side你是否知道一些博客、wiki 或任何我可以进一步了解它的网站? -
如果您想要一个更具体的标题主题(因为通用性在 SO 上不受欢迎),您的帖子是关于您的数据库和前端可以有多接近。因此,您可以重命名为“数据库和前端耦合的风险”
-
@BadZen 所说的浏览器端的数据层 可能意味着什么,是用一些 Javascript 真正维护浏览器中的数据层。因此,您可以从 HTML 元素中抽象出 ID,并将其移至 Javascript。但即便如此,攻击者也可以继续使用 Javascript。因此,验证 ID 是否正确和有效的最佳位置是在后端(如 BadZen 所示的中间件或数据层)。如果您有前端与之通信的 Web 服务,您可以在那里对其进行验证,并在未经授权的资源访问时返回错误响应。
标签: servlets web frontend backend coupling