Можно ли ограничить доступ к файлу PHP только из Flash? Например. я имею example.php
а также file.swf
, File.swf
отправляет запрос example.php
, который возвращает строку JSON.
Я не хочу разрешать пользователям доступ example.php
напрямую (через браузер или что-то еще).
Есть идеи?
Я не совсем уверен, как вы отправляете запрос из флэш-файла, но вот что я хотел бы попробовать;
Укажите заголовок из swf-файла, который не будет присутствовать в запросе от веб-браузера, а затем проверьте, присутствует ли заголовок в верхней части example.php, и завершите выполнение сценария, если его нет.
Пример:
<?php
if( !isset($_SERVER['HTTP_MYSPECIALHEADER']) ){
die('You cannot access this file directly!');
}
// Do whatever the script should do if the request came from the .swf file.
Как я уже сказал, я не знаю, как это работает со связью из SWF-файла, но вы всегда можете взять var_dump переменной $ _SERVER, чтобы посмотреть, есть ли уже какие-либо заголовки, которые вы могли бы использовать, чтобы проверить, пришел ли запрос от SWF-файла. файл.
Редактировать: Как я узнаю, что запрос пришел от Flash SWF?
Проверьте это. Как уже говорилось, я не думаю, что вы можете быть на 100% уверены, что запрос возник из flash-файла, поскольку пользователь всегда может манипулировать тем, что отправляется на сервер.
Краткий ответ сделать невозможно.
ОДНАКО вы можете сделать это сложнее, подписав сообщения закрытым ключом, который вы встраиваете в .swf (открытый ключ находится на сервере). Это создает уникальную подпись для разных сообщений, с помощью которой вы можете проверить целостность сообщения. Ваше сообщение также должно содержать временную метку, чтобы вы отклоняли запросы старше 15 лет, чтобы предотвратить повторные атаки.
Это правда, что люди могут получить ключ, декомпилируя .swf, а затем просто подписать свои собственные сообщения (хотя это требует гораздо больше усилий, чем просто подделка заголовка).