У меня есть файл под названием action.php, который сделает какое-то действие. Я хочу показать это как простой вывод JSON или JSONP. Пользователь будет вызывать это с помощью URL-адреса, например:
action.php?jsonp=callback
В моем action.php я делаю что-то вроде этого
$jsonp = isset $_GET["jsonp"] ? $_GET["jsonp"] : false; $output = execute_action(); if ($jsonp) { header('Content-Type: application/javascript'); printf("%s(%s)", $jsonp, json_encode($output)); } else { header('Content-Type: application/json'); echo json_encode($output); }
Но для меня это кажется небезопасным. Должен ли я проверять или удалять параметр обратного вызова jsonp, если он передан? Если да, то в какой ситуации это защитит, и как мне это сделать в PHP?
Предположим, что этот action.php открыт для Интернета как услуга для любого веб-сайта (включая мою собственную).
Изменить: Для ясности мой вопрос состоит из двух частей:
Ваше мнение о важности защиты гипотетического стороннего сайта от вредоносных инъекций jsonp
Предположим, что я хотел защитить сторонние сайты с помощью моей службы, должен ли я проверять параметр jsonp (т. Е. Возможно, только разрешать определенные символы?), Или мне нужно избежать выхода jsonp (если это так, какую функцию php
я должен использовать?)
Для меня, чтобы отметить ответ, как принято, я хотел бы получить более подробный ответ на оба этих вопроса.