我正在用C#制作桌面软件。该软件将向我的网站发送Http请求,该网站有一个php脚本,可以定期响应请求。在我的网站上,我需要验证请求来自软件而不是用户来自他自己的程序。我的意思是用户可以复制POST字符串并开始向我的服务器发出请求。我想这样做,我将不得不随着Microsoft Applications的要求发送一些证书和请求。我搜索了它,但没有找到任何有用的东西。请告诉我如何验证。
答案 0 :(得分:0)
您需要做的是创建加密签名以附加到标头中的请求。我的意思是你采取请求的一些相关方面,如URL,表单值,日期/时间,然后创建一个加密签名,您的应用程序提供该签名作为它拥有您的加密证书的证明。这是一个简单的例子:
就像我说的那样,您生成此签名,然后将其作为HTTP标头附加到请求中。然后,您的服务器软件需要验证签名。如果它可以验证签名,您可以合理地确定请求者拥有证书并且请求(可能)来自您的软件。
精明的用户仍然可以反编译您的代码,获取证书并构建他们自己的请求,但至少您已经使它变得非常困难。您可以采取的最佳措施是保护您的证书定期到期,但您必须管理将新证书发送给客户。