我想确保在我的网络应用服务器上请求HTTP获取请求的客户端来自我的移动应用程序而不是其他任何东西。我考虑过不同的选择,但仍未提出任何建议。最重要的是,我不希望有用户交互,我希望移动应用程序本身能够处理这个问题。我提出的最好的方法是在移动应用程序上拥有一个秘密密钥,该应用程序是Web应用程序事先知道的,但是如果移动应用程序被反编译或密钥被发现某种方式,那么这将是无用的。 两者之间的通信在AES 128bit CBC密码中加密,随机IV--以纯文本来回传递,并在每次交易后发生变化。
某些通信是来自移动应用程序的东西,这在逻辑上是不可能的,并且需要人为干预 - 例如要求用户键入他们记住的密码并且已经在服务器上设置了密码?
最终,移动应用程序会更新Web应用程序服务器上的数据库,因此我希望确保从应用程序发出请求,而不是冒充应用程序的人。
答案 0 :(得分:1)
这是永远不可能的。这是由于CWE-602: Client-Side enforcement of Server-Side Security背后的基本属性。您无法决定客户的行为。没有什么能阻止软件用户附加调试器和读取内存或修改客户端。