我正在 Flash (AS3) 中构建一个与 Facebook 紧密集成的社交媒体应用程序——所有用户帐户都通过 Facebook 连接处理,所有 Facebook 连接都通过 Javascript 的组合处理。和 AS3 Facebook蜜蜂。我正在使用 Codeigniter在后端用于服务器端数据管理,包括通过来自 Flash 的 URLRequests 跟踪网站上的用户操作和数据。
我的问题是我不知道如何防止对来自 Flash 的服务器请求进行欺骗;从理论上讲,恶意用户可以跟踪 Flash 对我的服务器所做的调用,并以(例如)插入垃圾数据并将其与我的数据库中给定的 Facebook 用户 ID 相关联的方式重现它们。所有身份验证都在客户端(通过 Facebook JS API)进行,服务器没有干预,所以我很难弄清楚如何以确保用户的方式保护 Flash 和服务器之间的调用必须通过 Facebook 的身份验证才能制作它们。
我考虑过的一种可能性是使用客户端和服务器已知的加密方案来回传递 Facebook UID,这肯定比明文传递更好。然而,只需要一位有足够时间/耐心的有进取心的黑客来破解这个方案(或反编译 swf)来搞砸一切。
无论如何,我可能想得太多了,但这似乎很重要,我真的不确定最好的方法。任何反馈将不胜感激!
最佳答案
我只是花了很多时间试图弄清楚这个问题!我知道这是一个老问题,但希望它对您或至少对其他人有用。
基本问题就像你说的那样。如果您正在进行客户端身份验证,但您想要执行一些特定于用户的服务器端操作,您还需要对系统上的用户进行安全身份验证。理想情况下,您希望避免让他们使用密码等再次登录,因为那将是一种糟糕的用户体验。因此,人们可能会想只发送 UID 并以这种方式记录它们。不幸的是,这存在明显的安全风险。正如您所指出的,任何人都可以通过通常为公众所知的 UID 并以其他人的身份登录。
此问题的解决方案是使用存储在用户成功登录后 facebook api 丢弃的 cookie 中的信息。 cookie中的信息包含其中的用户信息以及唯一的签名数据。如果服务器抓取了 cookie 的内容,并且您正确处理了它,则应该弹出一个密码。此密码应与只有您和 Facebook 知道的您的应用程序密码完全匹配。如果是,那么您就知道 cookie(以及用户)是合法的。如果不一样,那么您就知道有人在尝试一些有趣的事情。
有关更多信息,您可以考虑查看以下页面: PHP - https://developers.facebook.com/docs/guides/web/#personalization ruby - http://vombat.tumblr.com/post/835536630/ruby-version-of-facebooks-get-facebook-cookie-in-php
我还应该指出,LinkedIn 和 Twitter 都存在类似的方法。
关于javascript - 强制执行 Facebook 身份验证 : Client-side and server-side,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405775/
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我遵循了教程http://gettingstartedwithchef.com/,第1章。我的运行list是"run_list":["recipe[apt]","recipe[phpap]"]我的phpapRecipe默认Recipeinclude_recipe"apache2"include_recipe"build-essential"include_recipe"openssl"include_recipe"mysql::client"include_recipe"mysql::server"include_recipe"php"include_recipe"php::modul
我有一个rubyonrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素
我在用Ruby执行简单任务时遇到了一件奇怪的事情。我只想用每个方法迭代字母表,但迭代在执行中先进行:alfawit=("a".."z")puts"That'sanalphabet:\n\n#{alfawit.each{|litera|putslitera}}"这段代码的结果是:(缩写)abc⋮xyzThat'sanalphabet:a..z知道为什么它会这样工作或者我做错了什么吗?提前致谢。 最佳答案 因为您的each调用被插入到在固定字符串之前执行的字符串文字中。此外,each返回一个Enumerable,实际上您甚至打印它。试试
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption
我写了一个非常简单的rake任务来尝试找到这个问题的根源。namespace:foodotaskbar::environmentdoputs'RUNNING'endend当在控制台中执行rakefoo:bar时,输出为:RUNNINGRUNNING当我执行任何rake任务时会发生这种情况。有没有人遇到过这样的事情?编辑上面的rake任务就是写在那个.rake文件中的所有内容。这是当前正在使用的Rakefile。requireFile.expand_path('../config/application',__FILE__)OurApp::Application.load_tasks这里