1

我有一台服务器和许多客户端。身份验证必须在服务器上完成。当用户提交 id 和密码时,它通过 post 方法发送,服务器对其进行身份验证并发送状态消息(有效/无效)。这样做不安全。不过,首先我应该使用一些令牌系统,比如 facebook 的做法。所以,为了帮助,我在这里发布了一些问题。如果我想遵循令牌系统,有人建议我使用 openId。我已经完成了,但它非常复杂。我不需要那么复杂。

然后我想到了 fsockopen。一旦提交表单,它就会进入客户端系统中的功能之一。从那个功能我发送和接收数据。

    $url = 'http://www.server.net/auth_system/test'.'/'.$email_id.'/'.$password.'/'.$site_id; 

     $fp = fsockopen($url_parsed['host'],"80",$err_num,$err_str,30); 
     fputs($fp, "POST $url_parsed[path] HTTP/1.1\r\n"); 
     fputs($fp, "Host: $url_parsed[host]\r\n"); 
     fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); 
     fputs($fp, "Content-length: ".strlen($post_string)."\r\n"); 
     fputs($fp, "Connection: close\r\n\r\n"); 
     fputs($fp, $post_string . "\r\n\r\n"); 

在服务器:

    $status =   Database...($email_id, $password, $site_id);            
                    echo "<br>split-delimiter".$email_id."split-delimiter<br>";
                    echo "split-delimiter".$status."split-delimiter";

** 请告诉我我在做什么是正确的?有更好的方法吗?使用 curl 怎么样?

4

1 回答 1

0

最近我和我的好朋友有一个非常不同的意见。他还认为openID比较复杂,他喜欢自己做身份验证。

复杂

但我对你(和他)的问题是:

  • 你觉得 OpenID 有什么复杂的地方。我真的看不出来。当您使用友好的 OpenID 界面时,我认为它很容易/友好。看看stackoverflow的登录。您是否发现进行身份验证很复杂?我根本没有看到任何复杂性。

为什么不应该进行身份验证

为什么我认为您不应该进行身份验证:

  • 安全地存储你的密码很难,老实说,我最近一直在研究这个问题,我认为密码学非常复杂(有些部分我无法完全理解)。PS:我认为您还应该阅读这篇非常有趣的文章,解释Lifehacker如何被 Jeff Atwood(Stackoverflow 的作者)入侵。

图书馆

我最近更喜欢编写 node.js(JavaScript) 代码然后是 PHP,但我创建了一个小,它使用极其简单的 LightOpenID 库和 openid-selector 来使其友好。您只需克隆存储库即可开始使用。在我看来简直太简单了。我喜欢做更多的提交(我认为不会有更多的提交),也可以很容易地使用 myopenid.com(就像 stackoverflow.com)创建一个 OpenID 帐户。

您可以在我的小型 PHP 虚拟主机提供商http://westerveld.name/php-openid/上查看一个工作示例(它只是一个与 github 保持最新的简单 git 克隆)。它看起来像下面的屏幕截图:

在此处输入图像描述

PS:我仍然认为当我做更多的提交时,图书馆将处于一个相当不错的状态。在我看来已经很不错了。

于 2011-02-04T08:09:56.583 回答