繁体   English   中英

如何使用REST API或其他方法保护JSON文件?

[英]How can I Secure a JSON file with REST API or other methods?

我到处搜索,发现了很多我无法理解的信息。 我正在使用WAMP服务器,并设法执行“ SELECT Name FROM Tablename”查询,并将数据传递给json_encode() 到目前为止,我都很喜欢结果,但是现在我需要保护服务器中的JSON文件,使其只能由运行我的Android应用程序的用户访问。

通过研究,我发现REST可能是我的解决方案,但我不了解如何针对我的情况实施它。 是否可以拥有服务器端REST安全性以及客户端端? 我了解REST是Web服务,并且阅读了其中Web服务基本上是网页的教程。 我的首要任务是服务器端json文件,安全性和速度。 用户将不会通过Android应用插入任何信息。 我正在考虑使用用户名和密码将Android应用程序部署到特定的json文件(验证)。

我的申请流程

如果您可以将我带到与该主题相关的视频教程或面向初学者的教程,将对您有所帮助。

这是我的具体问题?

  • 我可以使用JSON解析图像吗?
  • mysqldump->转换.csv文件---> SQLite是否更有效? (安全地)。
  • 假设数据库中有100万个条目,.CSV文件有多大?
  • 我该怎么做?

请帮忙,谢谢。

解决方案:使用HTTP标头

不安全的解决方案:

使用User-Agent标头。

User-Agent: MyAndroidApp/1.0

更安全的解决方案:

首先,您需要使用SSL,因此没有人可以轻易看到您的密钥。

其次,您可以在您从android应用发出的请求的HTTP标头中放置一个秘密密钥:

X-Android-Secret-Key: fee400be-7d08-45c5-bf7c-ff79c35a838c

您在服务器上检查标头,并且仅在收到所需标头时才将文件送回。 您可以将标头保密,但不能让SSL穿透。

我只会回答您关于应用程序身份验证的原始问题。 您的其他问题属于单独的问题。

如果仅是您的客户端和服务器,则可以(并且应该)使用相互认证的SSL,而无需购买任何东西。 您可以控制服务器和客户端,因此每个服务器都应该只信任一个证书,一个证书属于另一个证书,因此您不需要CA。

这是高级方法。 创建一个自签名服务器SSL证书并部署在您的Web服务器上。 为此,您可以使用Android SDK随附的keytool。 然后创建一个自签名客户端,并将其部署在应用程序中的自定义密钥存储区中作为资源(keytool也会生成此资源)。 配置服务器以要求客户端SSL身份验证,并仅接受您生成的客户端证书。 将客户端配置为使用该客户端证书来标识自己,并仅接受服务器上为该部分安装的一个服务器端证书。

逐步解决这个问题要比在此保证的更长。 我建议分阶段进行此操作,因为网络上有关于如何在服务器端和客户端使用Android中的自签名SSL证书的资源。 O'Reilly出版的《 Android平台的应用程序安全性》一书也有完整的演练。

通常,您会将证书/私钥存储在某种类型的密钥库中(如果使用的是Android,则为KeyStore),并且该密钥库将被加密。 该加密基于密码,因此您需要(1)将该密码存储在客户端的某个位置,或者(2)在用户启动客户端应用程序时向用户询问密码。 您需要做什么取决于您的用例。 如果(2)是可接受的,则说明您的凭据不受逆向工程的保护,因为它将被加密并且密码不会存储在任何位置(但是用户每次都需要输入密码)。 如果您执行(1),则有人将能够对客户端进行反向工程,获取密码,获取密钥库,解密私钥和证书,并创建另一个能够连接到服务器的客户端。

您无法采取任何措施来防止这种情况; 您可以使代码的逆向工程变得更加困难(通过混淆等),但是您无法使其变得不可能。 您需要确定使用这些方法可减轻的风险是什么,以及减轻该风险需要进行多少工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM