我正在尝试创建一个简单的Web应用程序供企业使用。我没有创建单独的身份验证方法,而是使用Requests库将凭据输入发送到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。使用算法创建身份验证令牌,并在请求请求的基础上继续传递。这里的基本前提是,身份验证令牌就像一个密钥,它位于前端,以确保密钥保存在安全的地方。当您编写第三方可以使用并需要API级别访问的服务时,Auth令牌是最好的情况2.使用Flask-login并使用flask的userloader函数在用户登录时对其进行身份验证。请记住在服务器上散列密码。这会增加服务器的安全配置文件3.在flask-login中使用requestloader。这类似于(1),你不必做很多繁重的工作
希望这可以帮助