Реализую форму которая при отправке данных обращается к стороннему API (сервис VoIP телефонии), в первой версии делал это с помощью curl на php, т.е. была схема:
- форма - отправка данных на ajax в php скрипт, - curl - ответ от сервиса в json - распарсили, - выдаем ответы.
Во второй версии нашел возможность напрямую в jquery реализовать задачу, т.е. сейчас обращение и ответ прямо в js файле.
В связи с этим вопросы:
1. Это наиболее легко в плане структуры, но правильнее ли это первого варианта? ПОтому как:
- Вопрос безопасности: в js будут светится секретный ключ и логин для обращения к API, хотя я уже нашел как закрыть js от сторонних глаз - но все же - безопасно ли это?
2. Как в js файл получить данные из БД - те же логины и пароли и секретные ключи хранятся разные в БД, потому что в разных обращениях они меняются в зависимости от того что выбрано в форме исходной.
js можно закрыть через обфускацию например. не то чтобы скрыть но максимально завуалировать )) и да! обфускацию можно делать в том числе через PHP скрипт
Alexey Sosnovsky: это все ерунда :) -Кто захочет, легко вернет к исходному виду. Такого вида скрытие - лишь от простых юзеров, но не от хакеров и подобных существ.
ну так подобные существа и бэкэнд у тебя расковыряют если надо ) тогда вообще не писать код чтоли? нужно максимально от рисков оградиться в разумных пределах в любом случае
Alexey Sosnovsky: Я считаю так:
-Всем, что связанно с безопасностью должен заниматься PHP, серверный язык, созданный именно для подобных дел.
-JavaScript должен исключительно упрощать работу с PHP, добавлять сайту некой подвижности. Он не в коем случае не должен брать на себя функционал и тем более работать с вещами, связанными с безопасностью. У некоторых редких интернет-серферов JS вообще может быть отключен! Они не должны лишаться ключевых возможностей.
(Т.е, если нет возможности послать Ajax, должна отправляться обычная HTML-форма и т.п).
согласен. на фронтэнде можно валидацию формы проверить ну или запросить статус авторизации как в связке firebase-angular например. а все работы с безопасностью в данном случае происходят на стороне бэкэнда.так что противоречие мнимое. я говорил лишь о том что можно максимально замаскировать свой код если есть необходимость, чем максимально затруднить копипаст алгоритмов, но не более того. хранить явки/пароли на фронтэнде мягко говоря неразумно.