2017-09-03 124 views
-1

我正在嘗試使用燒瓶創建登錄頁面,當他們輸入正確的憑據時,他們會通過,但即使他們輸入了錯誤的密碼和用戶名,他們仍然會通過!燒瓶驗證(登錄頁面)

我的表格的index.html

<form method="post" action="/" role="login"> 
       <h3>ADMIN LOGIN</h3> 
       <div class="form-group"> 
        <input type="text" name="username" required class="form-control" placeholder="Enter Username" /> 
        <span class="glyphicon glyphicon-user"></span> 
       </div> 

       <div class="form-group"> 
        <input type="password" name="password" required class="form-control" placeholder="Enter password" /> 
        <span class="glyphicon glyphicon-lock"></span> 
       </div> 

       <button type="submit" name="go" class="btn btn-primary btn-block">Login Now</button> 

       <a href="#">Reset password</a> 
      </form> 

identityFace.py作爲我的主要

from flask import Flask, session, render_template, request, redirect, g, url_for 
import os 
import model as dbHandler 

app = Flask(__name__) 
app.secret_key = 'development key' 

@app.route('/', methods=['POST', 'GET']) 
def home(): 

    if request.method == 'POST': 
     username = request.form['username'] 
     password = request.form['password'] 
     # dbHandler.insertUser(username, password) 
     users = dbHandler.retrieveUsers() 
     return render_template('home.html', users=users) 
    else: 
     return render_template('index.html') 

if __name__ == '__main__': 
    app.run() 

和我model.py

import sqlite3 as sql 

def retrieveUsers(): 
    con = sql.connect("ExamsFaceId.db") 
    cur = con.cursor() 
    cur.execute("SELECT username, password FROM users") 
    users = cur.fetchall() 
    con.close() 

    return users 

它不會返回錯誤。

+0

你實際上並沒有檢查輸入值是否存在於數據庫中...另外,存儲明文密碼的想法很糟糕 –

回答

0

您確實需要查詢數據庫中的所有用戶。您無法驗證輸入的信息

嘗試對數據庫實施您自己的userExists(username, password)函數。

例如,

'SELECT username WHERE username=%s AND password=%s' 

然後return cur.rowcount > 0

早在瓶,檢查if not db.userExists(username, password),然後redirect()回到登錄。

另外,我認爲你應該真的只是使用Flask-Admin + Flask-Security plugins,因爲它會給你這個並修復你的純文本密碼問題。