【问题标题】:Creating an Edit Settings page for a FB tab app and securing it为 FB 标签应用程序创建编辑设置页面并保护它
【发布时间】:2014-06-17 11:45:52
【问题描述】:

我正在尝试创建一个 FB 标签应用程序。它应该有一个编辑设置页面,显然应该只有页面管理员可以访问。如果管理员正在查看标签 - 他应该会看到指向该页面的链接。我可以用 jQuery 做类似的事情:

var is_admin = "<?php echo isset( $page['admin'] ) && $page['admin'] == 1 ? true : false; ?>";
if(is_admin)
   $("<div id='div_edit_settings'>Edit Settings</div>").appendTo("some_div");

稍后我可以检测到该链接何时被点击并显示页面(它应该也显示在选项卡内,但由于它存储在服务器上,因此也可以通过浏览器访问)。

问题在于 JS 对 Firebug 和其他浏览器开发工具是可见的,因此有人可以插入代码行并看到该链接。那么我该怎么做才能确保只有管理员才能看到编辑页面并且只有管理员才能编辑设置?如何保护链接和编辑页面本身?

【问题讨论】:

    标签: php jquery facebook facebook-javascript-sdk facebook-php-sdk


    【解决方案1】:

    您应该使用 PHP 将链接插入到您的页面中,例如:

    <?php if ( isset( $page['admin'] ) && $page['admin'] == 1 ) : ?>
      <div id='div_edit_settings'>Edit Settings</div>
    <?php endif; ?>
    

    您还应该将管理员状态保存到会话中(名称不明显,可能是您稍后可以检查的随机字符串),以便您可以在其他页面上验证查看链接的用户是否实际上是admin(您在访问其他页面时失去了对 $page['admin'] 的访问权限,除非您将 signed_request 传递给后续页面调用。

    【讨论】:

    • 如何将signed_request 传递到后续页面?用post方法?像www.mysite.com/myapp/editpage.php?signed=true 这样的东西?不安全吗?
    • 最好将其保存在$_SESSION 或作为 GET 发送到每个页面 - 通过将 $signed_request 附加到每个链接。做signed=true 是不安全的。你需要这样做:www.mysite.com/myapp/editpage.php?signed_request=xxxxxxxxxxyyyyyyyyzzzzzzz
    • 好的,非常感谢!我会试一试,看看效果如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多