当你把你的代码放在一个公共的git库中时,你是如何处理敏感数据的,比如保密的API密钥,散列盐?
显然,将敏感数据保留在代码中会损害它。
另一种解决方案是不将秘密信息硬编码在代码中,而是将其存储在一个独立的文件中并激活该文件。这样做的缺点是,当有人第一次提取您的代码时,秘密信息将丢失,并且不会开箱即用。这可以通过在代码中编写一个“如果缺少初始化”例程来解决,但是这样做会让git系统滑入您的代码中,这不是一件好事。
另一种解决方案是创建一个“默认”秘密信息文件,在项目开始时提交它,然后使用您自己的信息而不提交它。但是这可能会让git抱怨当你拉的时候你有未提交的更改。
那么处理这个问题的常用方法是什么呢?
发布于 2012-11-16 04:00:49
尝试对配置了加密/解密筛选器的路径使用.gitattributes:
*secure.yml filter=crypt
在.git/config中添加crypt filter的配置:
[filter "crypt"]
clean = openssl enc ...
smudge = openssl enc -d ...
required
发布于 2012-10-18 19:09:43
可以说,您不应该将这些属性硬编码到您的源代码中,因为管理员希望在给定的系统上更改它们。如果这些属性在属性文件中(例如,在您的主目录中),问题就解决了。
对于可能遇到麻烦的用户,您可以签入一个默认文件,他们可以将该文件复制到自己的主文件夹并进行修改。如果错误消息和自述文件中缺少此特定文件的主题是明确的,则此设置将工作得很好。
发布于 2017-10-27 04:02:58
如果有人需要他们的Android项目,我找到了最简单的方法:
第1步:使用以下命令创建res/values/secrets.xml:
<!-- Inside of `res/values/secrets.xml` -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="parse_application_id">xxxxxx</string>
<string name="parse_client_secret">yyyyyy</string>
<string name="google_maps_api_key">zzzzzz</string>
</resources>
步骤2:在代码或xml文件中使用它
getString(R.string.parse_application_id),
getString(R.string.parse_client_secret)
或
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key"/>
步骤3:将该行添加到.gitignore文件中
**/*/res/values/secrets.xml
这是完整的article
https://stackoverflow.com/questions/9556126
复制相似问题