2014-11-04 69 views
1

我正在构建一个Web应用程序来向我们的团队和我们的客户展示DataTable中的数据。javascript安全问题(jQuery DataTables)

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

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

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

+0

当然,你需要过滤它的服务器端 – 2014-11-04 16:46:31

+0

唯一安全的假设是“如果它被服务,那么它是可见的”。 – 2014-11-04 16:49:26

+0

他甚至不需要js,看着开发人员工具网络日志就足够了。所以过滤服务器端是不必要的。 – manji 2014-11-04 16:49:33

回答

0

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

让我们来定义你所说的“隐藏”的意思,你的意思是:

  1. 不可见的显示器上,或
  2. 在网页源文件或响应消息没有发送到他们的机器。

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

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

如果该数据非常敏感 - 比如说地址和电话号码 - 那么这将被视为应用程序中的漏洞。


我需要筛选出的数据离开我的服务器?

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