Как передать в js файл данные которые должны быть доступны только если ты админ?

Есть аякс запрос. Передаем Data объект. К примеру:
var Data ={
key1: val1,
key2:val2
}
При помощи php, когда шаблон обрабатывается интерпретатором, мы можем добавить условие:
<?php if($adminLogged){ ?>
Data.key3 =val3;
<?php } ?>
$.ajax({.....});
таким образом если ты не админ то ты и не знаешь какой 3й ключ может передаваться.
А как быть если js файл идет отдельно и php не обрабатывается? Передавать через глобальные переменные из базового шаблона? А как тогда их скрыть от неадминов и не дать их изменить? Или какая вообще в таких случаях наилучшая практика применяется?
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
В приведенном примере у вас какой-то неверный подход, получается что если пользователь каким-то образом может получить 3 ключ, то может выполнять какие-то действия доступные админу. Это называется security through obscurity - защищенность через неизвестность(алгоритма работы), и является большой потенциальной дырой.

В вашем случае данные пришедшие с клиента просто должны проходить через фильтр (что является обязательным в любом случае) + на каждое действие с объектами для которых нужны права админа проверять если таковые права есть, и уже исходя из этого прерывать работу или продолжать обработку.

UPD: если ОЧЕНЬ нужно выводить в js какую-то строчку для админа, то перед загрузкой скрипта вашего аякс запроса добавьте:
<script>
<?php if($adminLogged){ ?>
let val3 = $someSecretValue;
<?php } else{?>
let val3 = false;
<?php } 
</script>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы