Я написал script, который может выполнять код, полученный через ajax с сервера. И я не знаю, может ли кто-нибудь его эксплуатировать? Нужно ли добавлять проверку, что запрос относится к одному домену?Безопасно ли запускать код, полученный через ajax?
ответ
Теоретически клиент доверяет предоставленным вами данным, включая код как внутри вашего приложения, так и динамический клиент, который получает аякс. Проблемы могут возникнуть, если кому-то удастся подменять ваш сервер или выполнить атаку «человек в середине» и может начать отправлять вредоносный код. Мое предложение было бы - если у вас есть сомнения в том, что кто-нибудь сможет его эксплуатировать, он, скорее всего, будет использоваться, поскольку вы не знаете, что делаете. Эрго - не делай этого.
Вы должны обеспечить код, который отправляется через AJAX, поэтому он не подделан.
Код может быть защищен различными способами. Например, HTTPS. Пользовательское шифрование также может использоваться, например, для кодирования Base64.
Можете ли вы предложить какой-либо способ шифрования с ключом на php и расшифровать его на js? Base64 не подходит здесь, я думаю. – ArtyGrand
Ну base64 кодировка поддерживается изначально как php, так и javascript. Javascript предоставляет функции atob и btoa для кодирования и декодирования base64 string (https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/atob). Php предоставляет функции base64_encode и base64_decode. http://php.net/manual /en/function.base64-encode.php –
Поскольку вы выполняете его на стороне клиента, клиент имеет 100% контроль над тем, что вы отправили. Вопрос в том, защищены ваши данные? – Mistalis
use eval is bad idea :( –
@Mistalis, как я могу защитить? Не знаю об этом – ArtyGrand