我想我更想找方向..
我主要是一个像我这样的网络开发者。我在apache PHP服务器上创建了一个web服务,我希望能够在不使用httprequest的情况下在java中调用该webservice。
我最初的想法是使用查询字符串传递API密钥来更新数据库记录。但是,我砸了我的头,意识到用户可以反编译我的代码并查看请求并在任何浏览器中使用它。这样做有安全的方法吗?
编辑:我认为我不够清楚。我想要做的是跟踪统计信息,如果用户获得了httprequest,他们可以进入浏览器并转到URL以弄乱数字。请求只是查询字符串。比如www.example.com?apikey=aausy7556ze&stat1=this&stat2=that
我想要一种方式,这个请求要么在浏览器中不起作用,要么在没有httprequest的情况下以某种方式执行此操作。希望有道理。
答案 0 :(得分:1)
让我们探讨一些不一定涉及混淆代码的选项(虽然它总是有帮助):
现在,在所有三个中,#2是最简单的,可能就足够了。数字2也可以与#3组合以增加安全性。这足以阻止用户从浏览器访问您的服务。
答案 1 :(得分:0)
你想要隐藏什么?我想我明白你只是想确保流量是加密的。如果您正在编写客户端和服务,则不需要使用SSL,实际上这样做很浪费。只需保留服务器和客户端都知道的密钥,然后使用对称算法(例如AES)加密消息。您还可以在加密之前向纯文本添加一些检查以确保它没有被篡改(例如添加时间戳,消息哈希等)
答案 2 :(得分:0)
我认为你说的是你的服务器不能信任客户端提供正确的值,除非它是你自己的程序。因此,您需要一种方法来确保它是您自己调用服务的客户端而不是另一个恶意客户端。您担心您在客户端中嵌入的任何身份验证方法都可以进行逆向工程,然后恶意客户端可以使用相同的身份验证方法伪装成合法客户端。
我认为你所能做的只是投入一些默默无闻(就像你试图隐藏URL参数一样)但是没有真正的解决方案。所有常见的安全解决方案都假定身份验证凭据将不受恶意用户的控制。但在您的情况下,您无法信任客户端以保证身份验证凭据的安全。
答案 3 :(得分:0)
如果某人正在反编译你的java,那么所有的赌注都会被取消。您可能希望最好的是,混淆器会使您很难阅读反编译代码。