验证网站的 API

Validate API of a website

本文关键字:API 网站 验证      更新时间:2023-09-26

我是这方面的新手,这可能是一个简单的问题。但我想验证 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请求的上述消息,在此基础上,我可以允许或拒绝用户访问我网站上的该特定页面。

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

看看 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 字符串中搜索单词"成功"。

附带说明:使用这种方法对用户进行身份验证并不那么安全,因为它涉及提及用户名和密码哈希的 GET 请求(我假设您确实使用密码哈希而不是明文密码,对吧?

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

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