Я хотел бы предложить веб-сервис, который можно встраивать для других веб-сайтов — теперь мне нужно решение для защиты встраивания — чтобы только разрешенный сервер мог встраивать страницу …
Как вы думаете, что является лучшим способом встроить страницу (это PHP-скрипт)?
И как лучше всего это защитить?
Я пробовал несколько вещей, таких как встраивание iframe и PHP $_SERVER['HTTP_REFERER']
защита (которая на самом деле не спасает;)
Так у кого-нибудь есть идея получше? Javascript, Htaccess, …?
ты можешь получить $_SERVER["REMOTE_ADDR"]
чтобы проверить, какой сервер является вызывающим, и вы можете отфильтровать нежелательных.
Другой способ — это то, что @Mike грустно, для создания API, для чего нужен токен безопасности.
Если вы хотите проверить IP звонящего, сделайте следующее:
$allowedHosts = array('192.168.1.1', '192.168.1.2');
if (in_array($_SERVER["REMOTE_ADDR"], $allowedHosts)) {
//Do what you want
} else {
die('Your host is not allowed');
}
РЕДАКТИРОВАТЬ
ОП спросил:
связано с тем, как легко подделать информацию $ _SERVER [«REMOTE_ADDR»]?
Не знаю, как я знаю, это не так легко. Может быть, есть способы украсть IP.
Если вы работаете с действительно конфиденциальными данными, я предлагаю использовать проверку IP А ТАКЖЕ маркер безопасности.
Вам необходимо создать интерфейс, который обслуживает входящий запрос. Если мне нужно сделать что-то вроде твоей работы, я бы так и сделал:
Проверьте входящий IP. (Что я написал с кодом). Давайте использовать ключ API / ключ безопасности в запросе. Проверьте правильность этих параметров.
Со стороны клиента сначала получите токен безопасности. Если ключ API и ключ безопасности верны, укажите маркер безопасности для клиента. Срок действия токена должен истечь в короткие сроки, например. 5-15 минут
Обслуживайте следующий запрос только с помощью ключа API, ключа безопасности, токена безопасности.
Сделайте все это с помощью протокола https.
Если существует много неудачных запросов с одного и того же IP-адреса, заблокируйте этот IP-адрес или временно заблокируйте его.
Других решений пока нет …