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
Database 如何创建一个无法访问数据的web应用程序?_Database_Security_Encryption - Fatal编程技术网

Database 如何创建一个无法访问数据的web应用程序?

Database 如何创建一个无法访问数据的web应用程序?,database,security,encryption,Database,Security,Encryption,前提:即将到来的项目的要求包括,除授权用户外,任何人都无法访问某些数据。这通常是好的,但这种情况并不常见。这些要求说明,即使是程序员或任何其他IT员工也无法访问这些信息。(他们想让我在看不到的情况下存储它。) 在我提出的所有方案中,我总能找到访问数据的方法。让我描述一下其中的一些 场景一:限制实时数据库上的表,以便只有SQL管理员可以直接访问它。 Hack 1:I展开一项更改,将数据发送到另一个表以供以后查看。此外,SQL管理员可以查看数据,这违反了要求 场景二:加密数据,以便需要密码才能解密。

前提:即将到来的项目的要求包括,除授权用户外,任何人都无法访问某些数据。这通常是好的,但这种情况并不常见。这些要求说明,即使是程序员或任何其他IT员工也无法访问这些信息。(他们想让我在看不到的情况下存储它。)

在我提出的所有方案中,我总能找到访问数据的方法。让我描述一下其中的一些

场景一:限制实时数据库上的表,以便只有SQL管理员可以直接访问它。
Hack 1:I展开一项更改,将数据发送到另一个表以供以后查看。此外,SQL管理员可以查看数据,这违反了要求

场景二:加密数据,以便需要密码才能解密。此密码仅为用户所知。每次创建新记录时,以及每次检索旧记录中的数据时,都需要它。加密/解密将在JavaScript中进行,这样就不会将密码发送到服务器,在那里可以记录或嗅探密码。
Hack II:推出一项更改,将按键记录在javascript中,并将其发回服务器,以便我可以检索密码。或者,展开一项更改,将未加密的数据存储在一个隐藏字段中,该字段可以发布到服务器以供以后查看

场景三:与场景二相同,只是加密/解密发生在我们无法控制的网站上。这个神奇的网站允许用户输入密码和加密或纯文本数据,然后使用javascript解密或加密这些数据。然后,用户只需复制加密的文本,并在字段中输入新记录。他们还必须使用此网站查看旧记录的纯文本。
黑客III:除了在他们的系统上安装一个功能齐全的键盘记录器之外,我不知道如何破解这个


因此,场景三看起来很有希望,但对用户来说很麻烦。还有其他我可能忽略的可能性吗?

如果你可以在页面上使用javascript,那么我认为你什么都做不了。如果您可以在浏览器中看到它,那么这意味着它在DOM中,这意味着您可以编写一个脚本来获取它,并在解密后将其发送给您

这些问题通常不是通过控制解决的吗:

  • 所有程序员都需要一定程度的许可和背景调查
  • 他们接受了培训,以了解发布代码来访问数据是一种可能的或更严重的犯罪行为
  • 某些领域的每一项变化都需要某种形式的批准
  • 例如,没有签准,页面上就没有JavaScript


    如果你被允许添加任何你想要的代码,那么总有办法,依我看。

    要求客户提供一份保密协议,让你签署,签署,然后查看你想要的数据

    我想知道的是,你到底能对加密数据做些什么?几乎所有的应用程序都要求您对数据进行一些过滤,无论是将数据移动到所需位置、修改数据、清理数据还是显示数据。否则,你只是一个被美化的烟斗,你不需要做任何工作

    我能想到的唯一方法是使用CRUD选项进行简单的表单到表映射,这样您就不会查看数据或对数据进行任何处理。如果您知道数据将采用什么格式,那么您应该能够使用RoR(一种简单的皮肤)推出一些东西,将SSL放入混合中,并将其推出。使用相同格式的虚拟数据进行测试,然后设置


    事实上,您的客户是否无法为测试提供虚拟数据?如果他们可以,那么你的生活就简单了,因为你所做的就是提供一个“可安装的”,并告诉他们如何编辑配置文件。

    场景3不就是将所有数据公开给magic网站吗?这听起来不像是一个可解决的问题(至少我想不出解决方案)。

    如果这确实是一个要求,防止这种情况发生的唯一方法是在发布软件之前聘请外部公司审核代码,这将非常昂贵。

    选择任何最容易实现的解决方案,我认为这些要求表明客户不了解软件开发,因此销售您采取的任何方法都应该很容易。

    我认为您仍然可以通过以下方式创建应用程序:

  • 创建一个dev数据库并为其设置一个用户
  • 询问他们:需要显示在屏幕上的每个字段的数据类型、大小和名称
  • 设置屏幕,在数据库中创建接受它们指定的数据类型和大小的列
  • 将应用程序部署到生产环境,连接到空数据库。让有权限的人(不是你)进入并设置数据库用户的密码,并在web应用程序中为DB用户设置密码
  • 授权用户可以做任何他们想做的事情,而你从来没有看到任何数据是什么样子
  • 当然,维护应用程序和调试将是一件痛苦的事情

    --答复评论:

  • 好的,在数据库和web应用程序的配置中为用户名设置密码后,编写一个连接到数据库的程序,设置随机密码,然后将相同的随机密码写入web配置

  • 阻止任何从机器传出的数据包,除非发送到一组授权的工作站-因此您无法安装间谍软件

  • 然后将两台服务器上的管理员密码设置为相同的随机密码,然后删除服务器上的所有其他用户,删除程序,并删除程序源代码

  • 擦除开发人员计算机的硬盘驱动器