Будучи относительно новым для веб-разработки, по крайней мере, используя технологии на стороне клиента, такие как инфраструктура AngularJS, мне нужно решить несколько запросов, прежде чем я смогу запустить свой последний проект.
Я пишу приложение, используя AngularJS, который считывает / записывает / обновляет данные в базе данных. Поскольку javascript является клиентской стороной, я решил написать PHP REST API для выполнения запросов к базе данных, что приведет к безопасному имени пользователя и паролю и одному слою базы данных.
Мой вопрос заключается в том, что, учитывая мой REST API, я буду использовать AJAX из javascript (на стороне клиента) для вызова методов. Как заставить другие сайты писать сценарий для вызова API REST? Помещение маркера аутентификации в код javascript не очень безопасно, кто-то может его просто скопировать.
Является ли REST API лучшим подходом к этой проблеме? Я не склонен к изучению новых технологий или практик, поэтому, пожалуйста, все мысли о лучших шаблонах проектирования или методах внедрения очень приветствуются. К сожалению, из-за моих ограниченных знаний о доменах в этой области я был бесплоден в своих Поисках Google, так как не уверен в том, какие условия я должен искать.
Большое спасибо.
Поскольку ваше приложение Angular работает в браузере, ваш REST API должен быть общедоступным из браузера любого случайного посетителя. Таким образом, у вас есть публичный API, по необходимости. Вы не можете его ограничить; либо посетители могут видеть данные, либо они не могут.
По сути, это не сильно отличается от традиционной веб-страницы. На странице, созданной на стороне сервера, вы выводите свои данные, упакованные как HTML, и доставляете их всем, кто спрашивает. В приложении REST-API / Angular вы доставляете данные, упакованные как JSON, всем, кто спрашивает. В любом случае данные одинаково общедоступны, хотя, возможно, REST API немного легче «злоупотреблять», чем очищать HTML. Может быть полезно преднамеренно использовать некоторые отслеживания поведения пользователя и дросселирование, если вы хотите, чтобы кто-то просто не сосал всю вашу базу данных сухим; это в равной степени относится к API-интерфейсам REST на основе JSON, как и к обычным веб-страницам.
Если вы также открываете API чтения / записи таким образом, вы, конечно, широко открыты для злоупотреблений.
Единственный способ сделать API непубличным – это потребовать аутентификации по паролю. Если пользователи вашего сайта должны войти в систему, вы можете ограничить API всем, у кого есть действительный сеанс. Это не очень помогает в схеме грантов, если кто-то может просто зарегистрировать учетную запись на вашем сайте, но ей нужно больше обдумывать и обеспечивает немного большую управляемость, чем полностью открытый API.
Конечно, API-интерфейсы администратора должны быть защищены таким образом, для чего требуется учетная запись, для которой у вас есть только учетные данные.