在Heroku上托管的简单Flask应用程序的身份验证

时间:2019-03-03 17:24:56

标签: python heroku flask python-requests flask-login

我正在尝试创建一个供企业使用的简单Web应用程序。我没有创建单独的身份验证方法,而是使用请求库将凭据输入以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 :(得分:1)

恐怕这是对用户进行身份验证的非常糟糕的方法。

此方法没有任何安全性,并给系统带来了很多漏洞。

此外,您还必须为每个请求编写此逻辑,使其繁琐并拖慢整个过程的速度(即使不是很多)。

您可以使用两种方法: 1.使用一种算法创建一个身份验证令牌,并在请求-请求的基础上继续传递该令牌。这里的基本前提是auth令牌就像一个密钥,并且它位于前端,以确保将密钥保存在安全的地方。当您编写第三方可以使用并需要API级访问权限的服务时,Auth令牌是最好的情况 2.使用Flask登录并使用flask的userloader功能在用户登录时对用户进行身份验证。记住对服务器上的密码进行哈希处理。这增加了服务器的安全性配置文件 3.在flask-login中使用requestloader。这类似于(1),并且您不必进行繁重的操作

希望这会有所帮助