验证网站的API

时间:2012-06-12 14:01:03

标签: php javascript api validation web

我是这方面的新手,这可能是一个简单的问题。但我想验证来自网站的API。

所以, 我是一家拥有自己网站的公司的经销商。所有用户都通过我的网站在主要公司的网站上注册,这意味着用户名/密码与公司的网站进行了对比。 现在,我的网站上有一些东西,我想只向注册用户显示。此外,我有API检查任何用户的用户名和密码组合,作为回报,我在(file_get_contents)的帮助下得到类似于以下消息:

如果成功:

***<?xml version="1.0" ?> 
  <!DOCTYPE ValidateUser (View Source for full doctype...)> 
- <ValidateUser>
  <Customer>james</Customer> 
  <Result>Success</Result> 
  </ValidateUser>***

如果失败,则为:

***<?xml version="1.0" ?> 
  <!DOCTYPE ValidateUser (View Source for full doctype...)> 
- <ValidateUser>
  <Customer>james</Customer> 
  <Result>Failed</Result> 
  <Reason>User/Password combination unknown</Reason> 
  </ValidateUser>***

就是这种情况。我正在考虑使用if语句编写一个php代码,该代码可以检查或验证来自API请求的上述消息,基于此我可以允许或拒绝用户访问我网站上的特定页面。

希望对你有意义。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

看看PHP SimpleXML。解析应该相当容易使用。

类似下面的一些代码可以解决这个问题:

$result = file_get_contents('http://www.example.com/validate?username=john&pwd=mypwdhash');
$simpleXML = new SimpleXMLElement($result);

if ($simpleXML->ValidateUser[0]->Result == "Success"){
   // success
} else{
  // fail
}

或者,您只需在XML字符串中搜索“success”一词。

旁注:使用此方法对用户进行身份验证并不是那么安全,因为它涉及GET请求,其中提到了用户名和密码哈希值(我假设您使用密码哈希而不是明文密码,对吧? )。

答案 1 :(得分:0)

您可能不希望听到这一点 - 但这种共享密码方法实际上并不是第三方网站提供的出色设置。它实质上意味着用户正在为另一个站点输入密码(如果我做对了,则为第三方)。如果您对用户数据进行了身份验证访问,那么他们应该使用openAuth(http://www.oauth.net)而不是共享密码...

我不一定说你应该告诉他们(因为它可能会花费你的工作),但我会考虑一下。如果他们的侧面有安全漏洞,可能会指向您,因为您可以访问某些密码。