2016-10-29 2 views
1

Сначала я объясню, что я имею в виду под «управляемым концом» и «управляемым интерфейсом».back-end vs front-end управляемое веб-приложение

Я занимаюсь разработкой веб-приложений в течение многих лет с фреймовыми фреймами. Это всегда было связано с обработкой всей логики php всей логикой, а также отправкой «просмотров» клиенту. Это то, что я называю «управляемым веб-приложением».

Теперь я понимаю преимущество разделения опасений того, что я называю «управляемым интерфейсом», где back-end никогда не отправляет html-представления клиенту. Он только отправляет данные, и представление полностью обрабатывается клиентом (угловые, vuejs, ...). Это позволяет использовать тот же back-end (который теперь является только REST API), который также может использоваться мобильным приложением.

Итак, теперь я объяснил, что я имею в виду под «управляемым контентом веб-приложением» и «управляемым интерфейсом веб-приложения», и объяснил, что я понимаю некоторые преимущества интерфейсных веб-приложений с интерфейсом. Теперь я упомяну некоторые сомнения, что я по этому поводу, и я ожидаю ответ на эти сомнения, потому что я уверен, что есть ответы, которые я просто не в курсе:

  1. В фоновом контролированном веб-приложение, формы защищены защитой от перекрестных ссылок (по крайней мере, когда вы используете достойную базовую инфраструктуру). За сценой к сеансу добавляется токен, чтобы подтвердить, что запрос поступает из одной и той же формы заявки. Как вы это делаете в управляемом интерфейсом приложении?

  2. Я видел управляемые приложения с интерфейсом, делающие несколько запросов для одной и той же страницы (один запрос на аутентификацию и запрос для каждого компонента (например, раздел веб-страницы)). С другой стороны, мы знаем, что для сокращения количества запросов на сервер рекомендуется «прокручивать» наши активы (css и js). Таким образом, с одной стороны, как можно меньше запросов к фоновому контенту является хорошей практикой, но, с другой стороны, с управляемыми интерфейсом приложениями. Очень часто можно увидеть страницу с 5 запросами, например, на обратной стороне -конец. На той же странице потребовался бы только 1 запрос, если бы это было управляемое на стороне приложение.

Благодаря

+0

Извините; Что за вопрос? (Номер 2, который есть.) – Progrock

+0

Вы путаете оптимизацию загрузки начальной страницы с запросами данных. Также не сложно реализовать csrf с ajax – charlietfl

+0

@ Progrock, 1 и 2 - это вопросы/сомнения по поводу вещей, которые мне не понятны. –

ответ

0
  1. я снова исследовал на CSRF и IIUC, XHR следует лучше против CSRF с:

    • современные браузеры автоматически добавлять origin заголовки всех XHR следует, который блокирует все запросы из неожиданных доменов (вместе с конфигурацией allow-origin на стороне сервера).
    • И мы можем сделать еще больше, вручную добавив токены csrf в js-код при рендеринге страниц на стороне сервера (для отправки с запросами в XHR позже). Знаки внутри js-кода невозможны для злоумышленника. EDIT: это не уникально для одностраничных приложений, я узнал, что традиционные серверные сайты могут сделать то же самое, написав токен в скрытом поле в форме после прочтения главы Synchronizer token pattern от wikipedia. Вместо <input type="hidden" name="csrftoken" value="..." />, я думал о <script>var csrfToken={{server.token()}}</script> ({{}} является шаблоном на стороне сервера). Первый используется, когда форма размещена, моя используется, когда js-код отправляет XHR. Моя идея - смесь главы Synchronizer token pattern и ее следующей страницы на Википедии. Таким образом, если наш сайт XSS свободен, злоумышленник не сможет получить токен в сеансе/странице/js, и запрос, который он трюк, на браузер пользователя для отправки, будет терпеть неудачу без токена.

      Что приводит к: современные приложения одной страницы XHR тяжелее чем традиционные веб-приложений, которая использует всю страницу на стороне сервера визуализации с JS-манипулируют изменения зрения (с) XHR следует по разным поводам. И таким образом, более безопасным.

  2. 1 запрос определенно лучше, чем 5, если только по запросу. Здесь мы делаем компромисс: Добавляя несколько трафика на загрузку страницы, мы получаем:

    • Как имя О.П., серверные интерфейсы многократного использования мобильными приложениями, поскольку они возвращают чистые данные, а не HTMLs, какие данные смешивать с веб-страниц ,
    • Лучшее разделение проблем как для передних, так и для задних концов. Разработчик backend пишет небольшие интерфейсы с одной функциональностью. И еще лучше для разработчиков интерфейса: представления, стили, сценарии логики взаимодействия (как мы видим в файлах .vue), все они организованы в виде компонентов, меньше всего беспокоиться, и мы счастливее.

      Поэтому я считаю, что торговля полностью стоит того.

+0

Не могли бы вы объяснить, что вы имеете в виду, отправив токены csrf из js в back-end, когда страница отображается на стороне сервера? Любая ссылка, объясняющая это? –

+0

@KarimMtl Отредактировано, что раздел. Кроме того, ваш вопрос может быть по существу таким же, как http://stackoverflow.com/questions/21862054/single-page-application-advantages-and-disadvantages –