【问题标题】:javascript security concern (jQuery DataTables)javascript 安全问题 (jQuery DataTables)
【发布时间】:2018-02-16 05:42:57
【问题描述】:

我正在构建一个 Web 应用程序,以将 DataTable 中的数据呈现给我们的团队和客户。

当客户登录时,我想隐藏除他们之外的所有数据。某些行,某些列。当团队登录后,我希望所有数据都可见。

如果我构建一个页面并使用 DataTables columns.visible 选项隐藏内容,具体取决于谁登录,客户是否可以简单地打开浏览器的开发人员工具并修改 javascript,从而显示所有隐藏的数据?

如果这是真的,我是否需要在数据离开我的服务器之前过滤掉数据(通过json 通过AJAX 提供)?

【问题讨论】:

  • 当然需要在服务器端过滤
  • 唯一安全的假设是“如果它被提供,那么它是可见的”。
  • 他连js都不需要,看开发者工具网络日志就够了。所以过滤服务器端是多余的。
  • @manji 谢谢你们。如果有人想把它放在答案中,我会标记它。

标签: javascript jquery ajax security datatable


【解决方案1】:

当客户登录时,我想隐藏除他们之外的所有数据。某些行,某些列。当团队登录后,我希望所有数据都可见。

让我们来定义一下“隐藏”是什么意思,你的意思是:

  1. 在他们的显示器上不可见,或者
  2. 不会在页面源或响应消息中发送到他们的机器。

1) 以 UI 为中心,而 2) 以安全为中心。请记住,您通过 HTTPS 发送的任何数据都将保存在用户机器的内存中;即使它在 GUI 中不可见,也有一些方法可以访问它。

如果您使用 DataTables columns.visible 隐藏内容,那么这会完成 1),但不会完成 2),因为数据仍在发送中,对吗?如果用户打开浏览器的开发工具并查看原始 HTTP 响应,所有数据都会在那里。

如果该数据是敏感数据(例如地址和电话号码),那么这将被视为应用程序中的漏洞。


我需要在数据离开我的服务器之前过滤掉它吗?

如果出于安全原因用户不应查看数据,那么仅关闭其可见性是不够的:您根本无法传输数据。所以是的,在发送响应之前在服务器上过滤掉它。

【讨论】:

    猜你喜欢
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多