Безопасный PHP для доступа к другому сайту - PullRequest
2 голосов
/ 19 июня 2019

У меня есть страница PHP, где только другие сайты могут получить доступ к опросу (вроде веб-крючка).Я не хочу, чтобы пользователи пытались получить к нему доступ.Как я могу убедиться, что к нему обращается определенный источник / путь?

Например:

Когда сайт проверяет наличие новых данных на моем сайте, они посещают страницу под названием check.php,Они будут отправлять POST и GET информацию для проверки.Вот пример кода, который у меня есть для этой страницы:

<?php
if(empty($_GET['name']) || empty($_GET['email']) || $_POST['secret-code'] !== 'abc123') {
    echo "error";
    exit();
} else {
    $name = $_GET['name'];
    $email = $_GET['email'];
    echo 'Here is the info you requested...';
}
?>

Как я могу защитить это еще больше?Я хочу убедиться, что никто не сможет получить к нему доступ, если они отправят свои собственные параметры $_GET и $_POST для запроса данных.Что я могу сделать с кодом или даже заголовками?Спасибо за любую помощь

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Почему бы просто не использовать токен, который вы можете сохранить в своей базе данных, и прочитать его из заголовков, как API?

Вы можете просто проверить, существует ли заголовок и иметь значение токена, и проверитьВ вашей базе данных этот токен действителен, и вы можете делать некоторые другие вещи, такие как регистрация запросов и тому подобное, и легко добавлять новые токены.

Если заголовок не существует и токен недействителен, тогда,удалить доступ ...

Или вы можете сделать «белый список ip», чтобы только запросы от определенных IP-адресов могли проходить или домены, подобные «CORS», но ограниченные определенными IP-адресами и доменами.

Потому что таким образом легче управлять доступом к определенным пользователям вашего сервиса.Другие варианты (в том числе более безопасные), как сказал @shn.

1 голос
/ 19 июня 2019

Одним из вариантов будет проверка конкретных пользовательских данных из запроса, таких как предопределенный пароль или ключ.Это наименее безопасный метод.

Другой вариант - разрешить сетевые подключения только из одного источника.Вы можете сделать это, проверяя IP-адрес клиента каждый раз, когда он делает запрос. Если вы выберете этот маршрут, убедитесь также и в парольном подтверждении, поскольку возможна подмена IP-адреса.

Еще более безопасный способ - принять часть запроса информации о клиенте и отправить его.Вернемся к клиенту, убедившись, что они отправили вам эту информацию (это будет похоже на двухфакторную аутентификацию).

Самый безопасный метод - это создание клиентом ключа с шифрованной подписью , который можно было проверить только тогда, когда он мог быть подписан им.

Это можно сделать с помощью openssl_sign() и openssl_verify () функции.

...