Создание страницы редактирования настроек для приложения вкладки FB и ее защита

#php #jquery #facebook #facebook-javascript-sdk #facebook-php-sdk

#php #jquery #Facebook #facebook-javascript-sdk #facebook-php-sdk

Вопрос:

Я пытаюсь создать приложение вкладки FB. Предполагается, что у него есть страница редактирования настроек, которая, очевидно, должна быть доступна только администраторам страницы. Если администратор просматривает вкладку — он должен увидеть ссылку на эту страницу. Я могу сделать что-то подобное с помощью jQuery:

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

И позже я могу определить, когда была нажата эта ссылка, и представить страницу (она также должна отображаться внутри вкладки, но поскольку она хранится на сервере, она также доступна через браузер).

Проблема в том, что JS виден Firebug и другим инструментам разработчика браузеров, поэтому кто-то может просто вставить строку кода и увидеть эту ссылку. Итак, что я могу сделать, чтобы убедиться, что только администраторы могут видеть эту страницу редактирования и что только администраторы редактируют настройки? Как я могу защитить ссылку и саму страницу редактирования?

Ответ №1:

Вы должны использовать PHP для вставки ссылки на свою страницу, что-то вроде:

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

Вы также должны сохранить статус администратора в сеансе (с именем, которое не очевидно, возможная случайная строка, которую вы можете позже проверить), чтобы вы могли проверить на других страницах, действительно ли пользователь, просматривающий ссылку, является администратором (вы потеряли доступ $page['admin'] при доступе к другим страницам, если вы не передаетевызовы signed_request на последующие страницы.

Комментарии:

1. Как я могу передать signed_request на следующую страницу? С помощью метода post? Что-то вроде www.mysite.com/myapp/editpage.php?signed=true ? Разве это не небезопасно?

2. Лучше всего сохранить его $_SESSION или отправить как GET на каждую страницу — добавив $signed_request к каждой ссылке. Выполнение signed=true небезопасно. Вместо этого вам нужно сделать: www.mysite.com/myapp/editpage.php?signed_request=xxxxxxxxxxyyyyyyyyzzzzzzz .

3. Хорошо, большое спасибо! Я попробую, посмотрим, как это получится.