Аутентификация для простого приложения фляги, размещенного на Heroku - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь создать простое веб-приложение для корпоративного использования.Вместо того, чтобы создавать отдельный метод аутентификации, я использую библиотеку «Запросы» для отправки ввода учетных данных в html-форму на веб-сайт моей компании и проверяю, является ли код состояния запросов 200.

Вопрос 1. Безопасно ли сравнивать этот метод?установить отдельную аутентификацию, такую ​​как Flask-Login?Как я знаю из некоторого прочтения, обычной практикой является получение хэша пароля и сравнение его с хэшем существующей записи в базе данных.

Заранее спасибо.

from flask import Flask, make_response, request, render_template, url_for
from flask_bootstrap import Bootstrap
import requests
from requests.auth import HTTPBasicAuth

app = Flask(__name__)
bootstrap = Bootstrap(app)    

@app.route('/', methods=["GET", "POST"])
    def login():
      if request.method == 'GET':
        return render_template('log.html')
      elif request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        r = requests.get('MY COMPANY WEBSITE', auth=HTTPBasicAuth(username, password))
        if r.status_code == '200':
          return redirect(url_for('index'))
        elif r.status_code != '200':
          print(r)
          return render_template('login_fail.html', username=username,password=password)

1 Ответ

0 голосов
/ 07 марта 2019

Боюсь, это очень плохой способ аутентификации пользователей.

Этот метод не имеет никакой защиты и открывает много уязвимостей в системе.

Кроме того, выПридется писать эту логику для каждого запроса, делая его громоздким и замедляя все (хотя и ненамного).

Существует несколько методов, которые вы можете использовать: 1.Создайте токен аутентификации, используя алгоритм, и продолжайте передавать его на основе запрос-запрос.Основная предпосылка здесь заключается в том, что токен аутентификации подобен ключу, и он находится на переднем конце, чтобы гарантировать, что ключ хранится в безопасном месте.Аутентификаторы являются наилучшим случаем, когда вы пишете сервисы, которые могут использовать третьи стороны и которым необходим доступ на уровне API 2. Используйте Flask-login и используйте функцию userloader от flask для аутентификации пользователя при входе в систему.Не забудьте хэшировать пароли на вашем сервере.Это увеличивает профиль безопасности ваших серверов. 3. Используйте requestloader в flask-login.Это похоже на (1), и вам не нужно выполнять тяжелую работу

Надеюсь, это поможет

...