问题标签 [data-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
307 浏览

filestream - System.IO - BinaryReader/Writer 是否准确读取/写入文件包含的内容?(抽象概念)

我对 C# 比较陌生,并且正在尝试使用 Visual Studio 表单将我在 wxMaxima 中设计的文本加密算法改编为 C# 中的二进制加密程序。因为我是读取/写入二进制文件的新手,所以我对尝试读取或写入文件流时会发生什么缺乏了解。

例如,不是像我过去那样加密文本文件,而是说我想加密可执行文件或任何其他形式的二进制文件。

这里有几个我不明白的问题:

  1. 当我打开文件流并使用 binaryreader 时,它会读取文件中绝对所有内容的绝对副本吗?例如,我希望能够读取整个文件,删除原始文件,然后使用旧名称创建一个新文件并将整个二进制流写回。这会准确地复制原始文件还是会存在某种必须以其他方式解决的损坏?

  2. 因为它是一个加密程序,所以我希望添加一个功能,在删除原始文件之前对其进行低级“格式化”,这样理论上就无法通过组合硬盘的物理数据来访问它。如果我使用 binarywriter 用乱码覆盖原始文件的部分内容,它将被放在硬盘上的同一位置,还是文件会变得碎片化,实际上只是通过 FAT 重定向到硬盘的其他部分?显然,如果它没有覆盖硬盘上的原始集群,那么用乱码覆盖原始文件是没有意义的。

0 投票
1 回答
565 浏览

mongodb - 定义自定义授权策略的最佳方式

我正在使用 MongoDB 开发一个项目,我有一个场景,这样我就可以根据用户的角色限制数据对用户的可见性,例如,如果我有一个表单文档:

角色为“admin”的用户可以看到“testme1”和“testme2”,而“guest”只能看到“testme2”。动态定义这些授权规则的最佳方法是什么,以便我的包装器 api 应该仅根据规则获取数据。我的做法是为用户提供一个网络“UI”来定义规则,并根据他的声明在我的服务器中保留一个“XML”文件。如果有人有更好的想法,请告诉我,如果他们是一些数据库级别的方法来做到这一点

0 投票
1 回答
65 浏览

security - EC2 上的标准数据安全实践是什么?

我们正在 EC2 上创建一个 webapp。我们的密码采用强大的单向哈希算法(SHA256,多次迭代)保存。

但是人们通常对其余数据做什么。电子邮件地址、生日、姓名和地址。

我们位于美国,不保留任何财务或医疗保健数据。只是用户配置文件——我相信法律要求很少,但人们实际上在做什么。

我们运行 EC2 应用服务器、MongoDB 和 Amazon MySQL RDS 实例。性能是一个考虑因素(我们预计必须根据需要进行扩展)。

0 投票
2 回答
56 浏览

c# - 如何在错误或 API 不可用的情况下保存对象的内容

我正在编写一个应用程序,我需要在其中跟踪完成了多少操作以及完成了何种操作。完成所有操作后,此数据将发布到 API。该 API 存储数据,公司可以利用这些数据向用户收取应用程序完成的工作量。

下面的代码是我的代码的真正简化实现:

TicksCounter 类在内部处理跨线程访问和一些其他问题。我的代码工作正常。

但是我的问题是我无法找到一种保护内容的好方法,TicksCounter以防应用程序崩溃或 API 不可用。

如果 API 不可用,我想建立一种情况来保存计数器的内容。然后每隔一段时间,我会尝试继续将内容发布到 API。当 API 再次可用时,这将成功,并且可以忘记此对象。如果应用程序崩溃或用户故意终止应用程序(比如说使用任务管理器),我希望同样的情况适用,当应用程序再次启动时,我们将发布这些不发送最后的刻度时间,到API。

现在我知道没有 100% 可靠的方法可以在应用程序终止时始终拥有正确的数据。蜱的最小损失是允许的。

我的想法

我正在考虑向 TicksCounter 类添加一些代码,该类使用二进制序列化将其所有内部内容保存到硬盘驱动器上的文件中。每次添加 10 的倍数时都会发生这种情况。

我的问题是这似乎是一项非常昂贵的操作,因为我正在保存到硬盘驱动器,而且我会经常这样做。最小的性能损失不是问题,因为我正在运行一个执行大量繁重工作的 Windows 服务,因此不会被注意到。但我正在寻找更好更正确的解决方案。

对于这种情况,什么是好方法?还是我应该坚持我的方法?

0 投票
1 回答
91 浏览

sql-server - SQL Server 数据更改和安全性

在我们的环境中,任何使用 sa 登录的用户都可以更改任何表数据。

所以我编写触发器来捕获更改的数据,例如谁更改,来自哪个 IP 等

但问题是用户可以在禁用特定表上的触发器后更改数据。因此触发器不会触发,用户可以无缝更改数据。

所以请指导我什么是捕获数据更改并记录它们的最佳方法。所以没有人可以绕过安全性。请不要告诉我禁用 sa 帐户,因为我正在寻找不同的方法来捕获更改数据。sql server 2005/2008 中是否存在任何安全方式,如果是,请在此处讨论。谢谢

0 投票
1 回答
94 浏览

web-applications - Parse.com 的安全程度如何?

我最近遇到了 Parse.com,在那里我开发了一个用于在其中存储数据的 android 应用程序。但是现在我必须使用我之前存储的相同数据开发一个 Web 应用程序。

但我的问题是,parse 要求我在 javascript 文件中提及“app key”和“java script key”。顺便说一句,我什至不得不提到同一个 java 脚本文件中的表名和列名。这意味着我将数据库的全部访问权限授予某个与我的数据相距一键的随机人。

那么我怎样才能使它更安全呢?

0 投票
0 回答
74 浏览

ajax - Backbone.js:是否有可能保护服务器数据不被抓取?

我是前端 Web 开发的新手,并且对一些关于主干js(可能是一般的 Ajax)的安全问题有一些非常基本的问题。

我在移动应用程序上工作了一段时间,对于大多数应用程序,我所做的是构建一个 API 来处理请求并以 JSON 格式为应用程序提供数据。使用应用程序时,我可以使用 API 密钥等为访问我的数据添加一些安全性。通过这种方式,我可以确保允许请求数据的任何人获取该应用程序的 JSON 数据,并且理论上,将无法向我的 API 发出大量请求以下载原始数据以用于他们自己的目的. 服务器(API)在 nodejs 上运行,mongodb 作为数据库服务器。

问题是现在移动应用程序正在运行,我需要制作一个 Web 界面作为用户与应用程序交互的替代方案。我看过一些backbone.js的例子,我的印象是,要使用它,服务器必须公开提供JSON格式的数据。如果我这样做,任何人都可以发出请求并从任何端点获取数据。我相信这是因为 Ajax 的工作方式。那么,如果我想将数据作为 html 而不是原始 JSON 数据提供,是否仍然可以使用 Backbone.js?我的想法是这样的:

浏览器向 Web 服务器发出请求 Web 服务器从 API 获取数据 API 验证密钥和秘密并将 JSON 数据返回给 WebServer Web 服务器向浏览器发送 HTML '我真的很抱歉问这个问题。我从未从事过网络开发工作,我知道这可能是一个非常基本的问题。如果这些假设是正确的,那么这是否意味着我将无法使用 Backbone.js 或基于 Ajax 的框架?

非常感谢,

马塞尔

0 投票
1 回答
1733 浏览

android - AndroidKeyStore在设备密码更改后消失

我目前正在开发基于客户端-服务器架构的 android 应用程序。为了数据安全,我使用公私密钥对进行数据加密和签名。我正在使用 AndroidKeyStore 来存储密钥对。下面是生成密钥对的代码:

执行此代码后,将在 '/data/misc/keystore/user_0/' 目录下生成 Keystore 相关文件(CERT 和 PKEY 文件)。出于安全原因,我正在加密应用程序敏感数据(如 auth-token)并将其保存到 Shared Pref。

但是现在当用户更改设备密码或 pin 时,密钥库文件将被删除,因为用于密钥库加密的 Masterkey 是使用设备凭据生成的。

现在为了解决这个问题,我尝试将公私密钥对保存在 RAM 中以及密码何时更改。从 DeviceAdminReceiver 的 onPasswordChanged(Context context, Intent intent) 方法,我正在执行以下代码:

但是,在此代码之后,仅在目录中创建 CERT 文件,'/data/misc/keystore/user_0/'并且在使用私钥解密时,会给出一些无效的签名错误。

此外,我已与服务器共享我的公钥,使用私钥加密数据,因此创建新的密钥对不会是更好的解决方案。

那么,如何在设备密码更改后保留我的公钥对?如果没有解决方法,AndroidKeyStore 的确切用途是什么?我可以在哪里使用它?

0 投票
0 回答
48 浏览

java - 在 Windows 上用 Java 实现对数据的访问控制

我们正在使用 Java FX 制作一个 Windows 桌面应用程序。我们将数据存储在本地 MySQL 服务器中(在同一台计算机上)。我们希望确保用户只能使用我们的应用程序编辑/创建数据。并且不能自行损坏或修改信息。

任何可能的解决方案来实现这一目标?

0 投票
2 回答
609 浏览

php - 如何保护 Web 应用程序/数据库中的医疗数据?

我正在开发一个将在网络上托管的小型辅助医疗应用程序(主要是日历和有关患者的信息)。该应用程序将允许不共享数据的多个帐户(每个从业者 1 个)。我想尽可能地保护个人数据,尤其是避免两个可能的问题:

1/ 一个编程错误,可能导致一名从业者访问其他人的数据 2/ 如果整个数据库被盗,我希望个人信息是安全的

我知道首先要做的是避免每一个 sql 或参数注入,但我想采取额外的步骤,因为我是人类,我知道如果数据泄漏,一个错误可能会导致真正的混乱......我真的想避免这种情况。

  • 该应用程序基于 PHP 和 Mysql
  • 该应用程序必须有自己的方法来解密个人数据,因为例如它会在后台向患者发送电子邮件和短信,以提醒他们预约。
  • 从业者通常有一个秘书,该秘书必须能够使用自己的登录名/密码访问应用程序并查看从业者的数据(但不是全部,只有与联系信息、约会日期/时间相关的数据......)
  • 当然,医生或秘书应该能够在数据库中进行搜索,例如通过病人的姓名、电话号码……即使它在数据库中被加密。

所以...我正在尝试找出存储、加密、解密数据的最佳方式。我也有点害怕性能,例如加密数据的搜索引擎......

现在这是我有的最简单的想法: 1/当一个新从业者创建一个帐户时,我生成一个与该帐户相关的唯一密钥,它永远不会改变,并将其存储在数据库中......这将是一种“salt” 2/ 对于每个个人数据,我使用由两部分组成的密钥对其进行加密(例如:患者姓名、电话号码):一个对整个应用程序相同(例如存储在 php 配置文件中) ) + 从从业者帐户中提取的“盐”。

这是实用的,因为从业者的密码和应用程​​序之间没有链接,因此例如从业者的秘书访问数据没有问题,我的电子邮件/短信任务解密数据以及从业者是否丢失了他的密码(这更比窃取数据库更可能发生)。我最初想用从业者的(明文)密码来加密加密密钥,但随后无法使用秘书帐户或计划任务访问数据。如果我用从业者密码的哈希值(存储在数据库中)加密加密密钥,它会复杂得多,实际上增加了零安全性好处。

问题 :

A/你认为它足够强大还是我错过了什么?我知道如果整个服务器遭到破坏,数据可能不安全(如果黑客足够聪明,可以找到密钥,请编写代码来解密所有数据)......但这并不是我所担心的。而且我找不到任何更好的解决方案来保持计划任务能够解密数据。你有更好的建议吗?

B/你将如何加密/解密文本数据?(算法、密钥、数据库......)我对 PHP 很陌生,我害怕犯错误。我阅读了文档,但它缺乏完整的现实生活示例(从密钥生成到文本加密/解密)。我担心 utf8 问题,密钥长度问题(从固定部分(php 配置文件)和存储在数据库中的可变部分创建复合密钥的良好做法是什么?)...

C/对于搜索引擎,你会怎么做?例如,我想找到一个名字以“ABCD”开头的人,我有比检索整个加密名称列表更好的方法吗,解密(php)每个名字,把它们放在一个列表中,然后(仍然是 php) 在该列表中创建搜索功能?你认为我应该使用 MySQL 的 AES_ENCRYPT/AES_DECRYPT 函数来加密/解密整个数据吗?

提前致谢