Как получить исходный домен по происхождению с помощью express и node.js ?

#node.js #express #parse-platform

#node.js #экспресс #разбор-платформа

Вопрос:

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

 var app = express();

app.all('*', function(req, res, next){
    var reqHeaders = req.headers;
    if( reqHeaders.origin === 'http://hotmail.com' ){
        next();
    }
    else{
        console.log('invalid domain: ' reqHeaders.origin);
    }
});
  

а затем я создал виртуальный домен в своей ОС Windows как
(127.0.0.1 hotmail.com )
и установил его с помощью xampp apache, я отправил запрос и был поражен, увидев, что он разрешил это, даже если вы знаете, что это виртуальный домен, а не реальный.

каково решение? как я могу проверить реальную идентификацию реферера, доменное имя и т. Д.?

Кстати, я использую это в приложении parse sever, если сервер parse предоставляет что-либо для этого на уровне приложения, пожалуйста, дайте мне знать. если это возможно в триггере beforeSave в коде cloudeтож, пожалуйста, дайте мне знать.

Спасибо.

Комментарии:

1. Вы не можете надежно определить, откуда поступают пользовательские http-запросы. Итак, это, вероятно, неправильный способ попытаться выполнить то, что вы пытаетесь сделать. Обычно этот тип проблемы решается путем запроса учетных данных для входа, а затем поиска злоупотреблений услугами в определенных учетных данных для входа, а затем запрета этих учетных данных при обнаружении злоупотреблений.

Ответ №1:

Вы не можете проверить ничего, что указано в заголовках, по крайней мере, все в заголовках можно изменить с помощью пользовательского запроса.

Чтобы предотвратить запрос, вы можете использовать это промежуточное программное обеспечение:

 var app = express();

app.use(function(req, res, next){
    if(req.headers.origin !== 'http://hotmail.com' ){
        return next();
    }

    console.log('invalid domain: ' req.headers.origin);
    res.status(400).send();
});
  

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

Я рекомендую вам использовать аутентификацию / авторизацию на основе токенов и передавать эти токены другим сторонам для предоставления в запросе, что будет достаточно безопасно и быстро.

Проверьте мой репозиторий: https://github.com/num8er/alttab-nodejs-challenge
Вы увидите пример аутентификации и фильтрации на основе токенов.