我有一个包含身份验证系统(登录&密码)的应用程序(用Delphi编写)。身份验证系统 - 返回每次都必须更改的信息
这个系统是在PHP中,并且应用程序从PHP获得结果使用HTTP GET方法。 如果登录名和密码正确,系统返回'OK',如果不正确则返回'NO'。
就像这个...
procedure Check;
var
x: string;
begin
x:=Get('www.mywebsite.com/auth.php?user=xxxxxx&pass=zzzzzz');
if x='OK' then
UnlockFeatures
else
MessageBox(0,'You're not VIP','Error',0);
end;
那么,它做工精细,但它是很容易规避这个系统,嗅探器,包编辑器或代理。
因此,我希望获得一些每次都会更改的信息(可能是PHP),而这可能会通过我的应用程序获取相同的信息。
我该怎么办?
我不需要代码。只是提示,建议,请...
谢谢...
我同意@jeroen关于使用post方法和https。另外,您可以使用加密和时间戳。首先,从服务器请求时间戳。服务器回复加密的时间戳。客户端解密时间戳并将加密的用户名pwd和时间戳发送到服务器。服务器检查时间戳。时间戳仅在一定时间内有效(几分钟)。所以,你可以避免重播攻击。如果有人试图重新发送请求,它将会过期。如果一切正常,那么服务器发回加密的'ok'信息。 – Hendra
尝试去找一些OpenID或OAuth实现。当你处理安全问题时 - 任何你无法发现的小错误都可能毁掉你的所有框架。有一些相对简单的OpenID v.1,他们说,超出了实用性,但仍然或多或少是标准的OpenID v.2和OAuth v.2。他们已经解决了这些问题,只是实施它们。 –
谢谢你们!你的提示肯定会帮助我很多。 – paulohr