Нужно ли мне проверять / разрешать запросы GET для сайта без каких-либо логинов / регистраций?

0
задан incognito 13 July 2018 в 16:49
поделиться

1 ответ

Вы можете создать GET API, не требуя аутентификации, да. Примером этого является JSON API Reddit. https://reddit.com/.json - это простой способ просмотра страницы на своем сайте в формате JSON, который затем может быть проанализирован моим сервером для отображения содержимого reddit. Нет логина, нет сообщений, нет аутентификации.

Однако вы заметите, что Reddit ограничивает то, что вы можете с этим сделать ... Я могу только читать информацию. НЕВОЗМОЖНО разрешать изменения базы данных через GET, когда поставляемые значения поступают от пользователя, и особенно если вы не используете протокол HTTPS с другими безопасными методами аутентификации. Я говорю об этом, потому что, когда у вас нет надлежащих лимитов скорости и нет формального метода аутентификации, который подключается к вашему серверу, становится невероятно легко разбивать ваши таблицы базы данных, если вы разрешаете изменения БД на лету через API ..

Теперь, для JWT - эта статья здесь отличная, которую я обычно посылаю людям: https://jwt.io/introduction/

Это довольно неплохо ломается, но в конечном итоге вы поймете, что JWT не слишком идеален для систем входа в систему. но не невозможно. Вот два примера похожих вопросов о SO, которые могут вам помочь :)

Безопасный REST API без аутентификации пользователя (без учетных данных)

How

Надеюсь, это поможет вам принять обоснованное решение.

Если вы действительно не хотите входа в систему, считаете ли вы, проверка? Это просто, цель JWT ослаблена без метода проверки того, кто идет с токеном с помощью других средств. Я лично не буду полагаться на JWT как на единую меру безопасности.

Вот пример простой & amp; secure REST API ... Это позволит кому-то получить некоторый контент для статьи блога (id) или что-то в этом роде.

<?php 
if(isset($_GET['content'])){
$id = FILTER_VAR($_GET['content'], FILTER_SANITIZE_NUMBER_INT);
$db = $connect->prepare("SELECT content FROM table WHERE id = ?");
$db->bind_param("i", $id); 
$db->execute();
$db->bind_result($content);
$db->fetch();
$db->close();
echo $content; 
} else {
echo "What do you want?"; 
}
?>

Нет нужных токенов, нет необходимости в регистрации .. это простая выборка базы данных и amp; вывода для API GET.

0
ответ дан Nerdi.org 17 August 2018 в 12:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: