当你将代码保存在公共git仓库中时,如何处理秘密API密钥,哈希盐等敏感数据?
显然,将敏感数据保留在代码中会对其造成损害.
另一种解决方案是不对代码中的秘密信息进行硬编码,而是将其存储在独立文件中并对文件进行gitignore.这样做的缺点是,当有人第一次提取您的代码时,秘密信息将会丢失,并且不会开箱即用.这可以通过在代码中编写"初始化,如果缺少"例程来解释,但是然后你让git系统滑入你的代码,这对IMO来说不是一件好事.
另一个解决方案是制作一个"默认"秘密信息文件,在项目开始时提交它,然后使用您自己的信息而不提交它.但这可能会让git抱怨你在拉动时有未提交的更改.
那么处理这个问题的常用方法是什么?
我正在开发一个涉及一些敏感用户信息的应用程序.我通过私人网络API检索此信息.我正在尝试确定将此数据导入我的应用程序的最佳方法.现在我正在探索创建一个可以这样做的内容提供商; 我的犹豫是让它变得安全.我希望这些数据只能由我的应用程序使用.理想情况下,没有其他应用程序甚至不知道它存在.
您是否有任何关于如何有效和安全地做到这一点的指示或建议?有关数据源的内容提供商的任何信息都是远程OAuth'd API?
谢谢!
编辑:我说内容提供商,但如果这不是我需要的最佳方式,请务必让我知道还有什么可以研究.
security android web-services android-contentprovider sensitive-data
因此,我正在研究人力资源部门所需的基于网络的补充系统,以存储和搜索前人员的记录.我满足了这个要求,但最终传下来的是系统必须能够通过完整的SSN进行搜索,并检索完整的SSN.除了我的抗议之外,采取一些措施保护这些数据实际上将是他们现在正在做的事情的巨大改进(你不想知道).
我一直在做很多研究,我认为我已经提出了一个合理的计划 - 但是就像所有加密/安全相关的东西都有很多复杂性,并且很容易犯错误.我的粗略计划如下:
除了需要以相对安全的方式存储密钥(上面的数字3)之外,它似乎足够坚固.
对我们不起作用的事情:
这只是我们网络的内部,所以我们至少在这里实现的任何内容上都有这层保护.对应用程序本身的访问将由活动目录控制.
感谢您阅读,以及任何建议.
更新#1:我从评论中意识到为SSN检索字段保留私有IV是没有意义的.我更新了计划,为每条记录正确生成新IV,并将其与加密值一起存储.
更新#2:我正在删除我不能做的事情列表中的硬件内容.我做了一些研究,看起来这些东西比我想象的更容易接近.使用其中一个USB安全令牌的东西是否为密钥存储增加了有意义的安全性?
我有一个ORM(NHibernate)映射到POCO,它将在ApiControllers中返回.我意识到JSON.NET允许我在我的模型上放置条件序列化方法(ShouldSerialize*); 然而,这些模型及其方法对环境一无所知,也不应该知道.我想要做的是根据用户登录我的网站时的角色有条件地序列化模型或其一个或多个属性.我可以从概念上理解如何做到这一点,但我在一个部分迷失了.这是一个示例模型:
public class SomeModel
{
public string SomeProperty { get; set; }
[Sensitive]
public string SomeOtherProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在属性上添加一个属性,将其标记为"敏感".然后在我的WebApi中将它序列化为输出时,我希望它检查该属性的模型,如果存在,则应该检查用户的角色.如果用户处于指定角色,则序列化程序应该序列化该属性,否则它将掩盖它或者根本不对其进行序列化.那么我是否必须编写自己的自定义格式化程序来处理这个问题,或者有没有办法挂钩内置的格式化程序来执行此检查?或者我的想法太局限了,还有另一种方法可以解决这个问题吗?
我确实认为可以处理的其他方式是在ORM级别,但无法在线找到好的示例.
非常感激!
编辑:我在这里找到了另一个类似的问题: 基于权限的WebApi端点的上下文序列化, 但没有解决方案.另外,我不喜欢通过属性在模型中设置基于角色的访问的想法.我认为应该在Web应用程序中处理.
我的单页应用 (SPA) 中的某些 URL 包含敏感信息,例如访问令牌、用户信息等。
例子:
/callback#access_token=HBVYTU2Rugv3gUbvgIUY
/?email=username@example.com
Run Code Online (Sandbox Code Playgroud)
我看到hotjar允许从跟踪数据中抑制 DOM 元素和图像。是否可以在 URL 中隐藏参数或至少禁用某些页面的跟踪?
网站构建器 SaaS 应用程序具有一项功能,可让客户将其 Stripe 帐户连接到其网站并接收资金。该 SaaS 应用程序的每个用户(网站所有者)都有一个 Stripe 帐户。
在应用程序的开发阶段,我们只是以加密的方式将每个客户的 Stripe 公钥/私钥存储在内部数据库中。但即使它是加密的,这也不是我们在生产环境中采用的方法。
在数据库中安全地存储每个帐户的敏感 Stripe 配置的正确方法是什么?
我正在编写一个应用程序,主要目的是保持用户购买列表.
我想确保即使我作为开发人员(或任何完全访问数据库的人)也无法弄清楚某个人花了多少钱或者他已经购买了什么.
我最初想出了以下方案:
--------------+------------+-----------
user_hash | item | price
--------------+------------+-----------
a45cd654fe810 | Strip club | 400.00
a45cd654fe810 | Ferrari | 1510800.00
54da2241211c2 | Beer | 5.00
54da2241211c2 | iPhone | 399.00
user_hash(可能与盐渍等).如果有足够的用户,通过了解他的名字,几乎不可能知道特定用户花了多少钱.
这是明智的做法,还是我完全愚蠢?
我需要使用Drupal的敏感数据来使用自定义模块.如果我只是通过GUI设置它们,它们将以未加密的形式存储在数据库中.任何有权访问它的人都可以访问我的敏感数据.
我现在可以看到两种解决方案:
根据你的哪种解决方案最好?您有什么推荐的吗?还有其他最好的选择吗?
最好的祝福.
我正在考虑在github上发布一个项目.它可能包含像API令牌这样的敏感数据,我自然不希望这些数据是公开的.我想在本地使用正确的令牌,密码等代码,但只有占位符才能进入存储库.
我可以尝试记住每次推送之前删除这些数据(手动,自动?),但是本地和github副本显然是不同的,无论如何这似乎容易出错.
这种情况的好习惯是什么?
sensitive-data ×10
c# ×2
encryption ×2
javascript ×2
.net ×1
android ×1
asp.net ×1
banking ×1
drupal ×1
git ×1
github ×1
hash ×1
hotjar ×1
nhibernate ×1
php ×1
privacy ×1
security ×1
web-services ×1