Мы изучаем возможность создания приложения с одной кодовой базой, которое можно запускать на нашем веб-сервере (в виде HTML-файла и Javascript), а также в виде приложений для смартфонов (iOS / Android, скомпилированных из Intel XDK). Благодаря такому подходу мы можем использовать только HTML, CSS, Javascript. Наше текущее исследование — подключение к нашему серверу с использованием AJAX для вызова файла PHP на сервере, который передает те же данные обратно со стороны клиента Javascript.
В настоящее время мы тестируем следующие коды, немного позаимствованные и модифицированные из https://stackoverflow.com/a/5004276/144201:
HTML:
<html>
<script src="jquery.js"></script>
<script src="ajaxphpjquery.js"></script>
<form id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
<div id="result"></div>
JS: (показывает только запрос AJAX и часть получения данных. Мы используем jquery.)
request = $.ajax({
url: "http://MYURL.com/myPHP.php",
type: "post",
data: serializedData
});
// Callback handler that will be called on success
request.done(function (response, textStatus, jqXHR){
// Log a message to the console
console.log("it worked : " + response);
// And also show message on result tag
$("#result").html("it worked : " + response);
});
PHP на нашем сервере:
<?php
header("Access-Control-Allow-Origin: *");
$bar = isset($_POST['bar']) ? $_POST['bar'] : null;
echo "!!! $bar";
?>
В то время как все эти коды работали нормально, и мы вернули правильное отображение ввода формы, одна вещь, которая нас беспокоит, это использование header("Access-Control-Allow-Origin: *");
в php. Как уже упоминалось в https://stackoverflow.com/a/17098221/144201 , это подразумевает, что подстановочный знак будет разрешать межсайтовый скрипт из любого домена. Поэтому предпочтительнее использовать что-то вроде белого списка, чтобы разрешить домену подключаться к нашему серверу.
Но в случае гибридных приложений представьте, что тысячи пользователей используют это гибридное приложение на своем смартфоне и подключаются к нашему серверу через AJAX. Является Access-Control-Allow-Origin: *
единственный способ разрешить внешним гибридным приложениям подключаться к нашему серверу? Каков правильный способ решения этой проблемы с точки зрения безопасности?
Примечание: мы также нашли https://stackoverflow.com/a/26966685/144201 но это было задано два года назад, и нет никаких принятых ответов. Есть ли какие-либо рекомендации по этому вопросу на данный момент?
Задача ещё не решена.
Других решений пока нет …