2017-12-27 18 views
0

こんにちは私はラムダ関数を使用してローカルで実行されるmongodbのユーザー名とパスワードをチェックしています。mongooseを使用してmongodbに存在するかどうかを確認するパラメータとして値を送信

module.exports.handler = (event, context, callback) => { 
    console.log('login'); 
    const { username, password } = JSON.parse(event.body); 
    console.log("username--->",username); 
    console.log("password-->",password) 

    try { 
    // Authenticate user 
    const user = users.login(username, password); 
    console.log("----->inside login handler!!!",user); 

私はデシベル

login = function (username, password) { 
    console.log("--------inside login of users",username,password) 
    userRegister.findOne({ 
     username : username, 
     password : password 
    }).then(function(err,data){ 
     if (err) { 
     console.log("---------------err", err) 
     return _.omit(err); 
     } 
     else { 
     console.log("---------------data", data) 
     return _.omit(data); 
     } 
    }) 
    } 

にチェックするために値を送信していますこれはどこ値は、IMが未定義なって、何も返さないされています! findOneが動作していないと思います!事前に

おかげ

答えて

0

なぜあなたはパスワードに一致しています。 findOneでは、データベースに格納する前にパスワードをハッシュしておくべきだと私は信じています。もしそうでなければ、私は天国がそうすることを勧めます。

"username": {"$gt": ""} 
"password": {"$gt": ""} 

私はpassportのようなサードパーティ製を使用します。あなたはユーザーによって提供される値を見つける使用してライブラリ

login = function (username, password) { 
    console.log("--------inside login of users",username,password) 
    userRegister.findOne({ 
     username : username // Remove password from here 
    }).then(function(err,data){ 
     if (err) { 
     console.log("---------------err", err) 
     return _.omit(err); 
     } 
     else { 
     // Match password here 
     console.log("---------------data", data) 
     return _.omit(data); 
     } 
    }) 
    } 
1

をハッシュ君を利用して文書は注射などのためにあなたが脆弱になります発見した後にパスワードを一致させますローカル認証。

ユーザ名でユーザを見つけて、ユーザ名とパスワードを '==='で確認できます。

findOneは未定義を返しますが、Robomongoのようなツールを使用して同じクエリを実行しようとすると、構文が正しいようです。

+0

"" "" "gt gt:" "} "パスワード ":{" $ gt ":"}}あなたは何を言っているのですか? – Grijan

+0

このクエリでハッカーは資格情報をまったく知らなくても、データベースの最初のユーザーとログインすることができます。 (任意の文字列が空の文字列より大きい)SQLインジェクションに慣れている場合、 'or 1 == 1'と等価です。 – Tai

関連する問題