【问题标题】:Low Security Password/Username Concept Flask Security Error低安全密码/用户名概念烧瓶安全错误
【发布时间】:2015-12-01 10:25:52
【问题描述】:

基本上只是尝试制作一个几乎没有安全性但不断收到内部服务器错误的简单登录页面,如果我出错了,任何帮助将不胜感激。我试过四处寻找,但找不到任何东西。我对 Python 也很陌生,所以放轻松:)

Python/Flask:

@app.route('/adminlogin')
def admin():
    return render_template('adminlogin.html')

@app.route('/adminDetails', methods =['POST'])  
    def adminLogin():
        correctUser = 'admin'
        correctPass = 'Password1'
        username = request.form['username']
        password = request.form['password']

    if username == correctUser & password == correctPass:
        adminSuccess()
    else: 
        admin()


@app.route('/admin')
def adminSuccess():
    return render_template('admin.html')

HTML:

<form action="/adminDetails" method="post">
        Username<input name="username" type = "text" maxlength="32" size="12" placeholder="Username" required><br>
        Password<input name ="password" type="password" maxlength="20" size="12" placeholder="Password" required><br>
        <button class ="menuitem" type="submit" value="submit">Submit</button>
        <button class="menuitem" type ="reset" value ="Clear">Clear</button>
    </form>

追溯:

 Traceback (most recent call last):
      File "C:\Users\\AppData\Local\Programs\Python\Python35-32\lib\site-    packages\flask\app.py", line 1836, in __call__ 
    return self.wsgi_app(environ, start_response)
  File "C:\Users\\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "C:\Users\\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\_compat.py", line 33, in reraise
    raise value
  File "C:\Users\\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1478, in full_dispatch_request
    response = self.make_response(rv)
  File "C:\Users\\AppData\Local\Programs\Python\Python35-32\lib\site-packages\flask\app.py", line 1566, in make_response
        raise ValueError('View function did not return a response')
    ValueError: View function did not return a response

【问题讨论】:

  • 请阅读错误信息。他们大概会告诉您 Password1 没有定义,但事实并非如此。您希望该变量的值来自哪里?
  • 来自 HTML 中的表单?
  • 哦等等,我明白你的意思了。

标签: python flask internal-server-error


【解决方案1】:

由于我无法发表评论,因此我必须将这条建议留在答案部分。
您应该尝试在调试设置为 true 的情况下运行您的应用。这将为您提供导致错误的整个追溯,而不是“内部服务器错误”

app.run(debug=True)

发布回溯,我们都会更好地为您提供帮助。

编辑:您的回溯表明您的视图函数实际上并没有返回任何内容。他们需要返回某种响应。因此,您需要做的是在 adminLogin() 视图中的 if else 语句中返回这些函数调用

【讨论】:

  • 截至目前 debug = True 会导致错误(errno 9)。
  • 好吧,这听起来可能微不足道,但既然你说你是 Python 新手,我认为值得一提的是 def adminLogin(): 没有缩进。我真的希望这不是它:p
  • 我修复了 python,traceback 以 ValueError 结尾:查看函数没有返回响应
  • 好的,所以我将您的整个代码复制粘贴到本地,为了使其运行,我修复了一些问题。在您的模板中将您的提交按钮更改为输入类型。 &lt;input id="submit" name="submit" type="submit" value="submit"&gt; 并在您看来将 &amp; 更改为 and,正如此处其他回答者所解释的那样,在 Python 中 &amp; 的性能不像您想象的那样。我希望这会有所帮助:)
  • 哦。在 if 和 else 语句中,您需要在每个函数调用之前放置 return。所以就像return admin() 而不是admin()
【解决方案2】:

这一行是错误的:

if username == admin & password == Password1:

应该是:

if username == admin and password == Password1:

例如:

>>> 1 == 1 & 2 == 2
False

您可以给我们完整的错误日志,以便我们找出错误。


错误日志显示原因:

ValueError: View 函数没有返回响应

所以你需要重定向到页面。

@app.route('/adminDetails', methods =['POST'])  
def adminLogin():
    correctUser = 'admin'
    correctPass = 'Password1'
    username = request.form['username']
    password = request.form['password']

    if username == correctUser and password == correctPass:
        return redirect(url_for('adminSuccess'))
    else: 
        return redirect(url_for('admin'))

文档:redirect

【讨论】:

  • 我没有收到任何错误,我只是在浏览器中收到内部服务器错误。
  • 使用调试模式,它应该会给你完整的回溯。
  • 我已经发布了完整的追溯
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 2018-09-12
  • 2016-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
相关资源
最近更新 更多