我一直在试验 OpenID,并设置了一个示例网页以使用我的 OpenID 帐户进行访问。我正在使用 Php OpenID Library by Janrain它不适用于我的 Google 帐户。一点研究让我找到了this question ,这表明问题在于 Google 使用 https 和...
... it's likely the setup for making HTTPS requests is borked on your PHP server. Check to make sure you have the ca-certificates package installed.
在同一个线程中,有人链接到他们的 hacked version of the library我已部署并成功使用了我的 Google 帐户。其他问题有其他自定义来解决类似问题( Janrain’s PHP-OpenID and Google/Yahoo 、 php-openID doesn’t work with Yahoo! 、 Example usage of AX in PHP OpenID ...)
我对安全不太感兴趣,所以我问;有谁知道不使用这些被黑版本的原因吗?
原始库是否存在这些 hack 设计修复的任何缺点,因此 hack 是一个潜在的安全漏洞?
是否有一位合格的密码专家看过这些解决方案并“以 David Chaum 的 mustache 为由!不!!”
如果是这样 - 因此我不应该使用任何这些 hack - 我将如何检查我是否“安装了 ca-certificates 包”?
最佳答案
以下是其中一个“被黑”版本的作者所写的内容:
In particular CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST are true by default: I set them to false and it worked for the test page!
其影响几乎抵消了使用 HTTPS 提供的任何安全优势。 HTTPS 在 OpenID 中有用的主要原因是它可以防止中间人攻击,即一些坏人毒害您的 DNS 缓存以将所有 google.com 请求发送到 bad -guys.example.使用正确配置的 HTTPS,您将验证连接上的证书,发现它不是来自 Google,然后说“我不会相信你说的任何话,坏人!”
当然,除非您不验证任何证书(您将所有 SSL_VERIFY 选项设置为 false),在这种情况下您的服务器将相信一切 bad-guys 说得好像它是真正的 Google 提供商一样。您可以想象那有多糟糕。
现在,坦率地说,这不是您可以做出的最糟糕选择,因为它并不比仅使用 HTTP 更糟糕,无论如何很多人都这样做。你只是lying to your users如果您暗示您提供 HTTPS 级别的安全性,而您并未提供。
关于进行基于 DNS 的攻击的难易程度,或者 forge SSL certificates 的难易程度,有很多信息。 .无论哪种方式,都需要有人攻击您的服务器与 Google 之间的连接,这通常比攻击咖啡店中用户的笔记本电脑与您的服务器之间的连接更难。
但是,实际修复 PHP 或 CURL SSL 配置要好得多。或者,如果您不这样做,请在用户使用 HTTPS 标识符注册时警告他们这一点,以便他们可以选择是否真的想在您的网站上使用该 OpenID。
这引出了您的第二个问题。我认为,不知道您使用的是哪个服务器平台,我能做的最好的事情就是将您链接到 Curl docs on SSL certificates ;请参阅“获取更好/不同/更新的 CA 证书包!”部分
关于PHP OpenID 不适用于 Google/Yahoo 和 'hacks' 修复它...它们安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3047688/
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="