Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Heroku上托管的simple flask应用程序的身份验证_Python_Heroku_Flask_Python Requests_Flask Login - Fatal编程技术网

Python Heroku上托管的simple flask应用程序的身份验证

Python Heroku上托管的simple flask应用程序的身份验证,python,heroku,flask,python-requests,flask-login,Python,Heroku,Flask,Python Requests,Flask Login,我正在尝试创建一个简单的网络应用程序供企业使用。我没有创建单独的身份验证方法,而是使用请求库将凭证输入发送到html表单到公司网站,并检查请求状态代码是否为200 问题1:与建立单独的身份验证(如Flask登录)相比,这种方法安全吗?从一些阅读资料中我知道,通常的做法是获取密码的哈希值,并将其与数据库中现有条目的哈希值进行比较 先谢谢你 from flask import Flask, make_response, request, render_template, url_for from f

我正在尝试创建一个简单的网络应用程序供企业使用。我没有创建单独的身份验证方法,而是使用请求库将凭证输入发送到html表单到公司网站,并检查请求状态代码是否为200

问题1:与建立单独的身份验证(如Flask登录)相比,这种方法安全吗?从一些阅读资料中我知道,通常的做法是获取密码的哈希值,并将其与数据库中现有条目的哈希值进行比较

先谢谢你

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.使用算法创建一个auth令牌,并根据请求不断传递该令牌。这里的基本前提是,auth令牌就像一个密钥,它一直到前端,以确保密钥保存在一个安全的地方。当您编写第三方可以使用并需要API级访问的服务时,身份验证令牌是最好的情况 2.使用Flask login并使用Flask的userloader函数在用户登录时对其进行身份验证。记住在服务器上散列密码。这会增加服务器的安全配置文件 3.在flask登录中使用requestloader。这类似于(1),你不需要做很多的举重


希望这有帮助

欢迎使用堆栈溢出,并且请确保每个主题都与中定义的主题相关。我们不是在这里推荐非网站资源(如托管提供商)。一般来说,向web表单发送凭据并检查200响应代码肯定不是正确的方法。@Chris感谢您的评论。修正了我的问题,把重点放在一个问题上。有什么更好的方法来解决这个登录问题?谢谢你的回答。如果我允许人们使用公司的凭证登录web应用程序,会怎么样?除了使用我上面的方法之外,还有其他方法可以实现吗?如果没有,为了安全起见,我将只使用flask-login。这在某种程度上取决于应用程序的用例是什么。这是您公司的客户可以登录的单独门户网站吗?这是您正在编写的服务,您公司的后端将使用它吗?