2015-07-31 2 views
0

Я пытаюсь сделать форму аутентификации пользователей в node.js с помощью выражения.Nodejs аутентификация пользователя sql command

В настоящее время я использую этот запрос для вставки в свой db.

var username = req.body.username; 
var password = req.body.password; 


connection.query('USE one'); 
    connection.query("INSERT INTO users(id,name,pass) VALUES (1,"+ username +","+password+")", 
    function (err, result) { 
     if (err) throw err; 
    } 
); 

моя структура дб

+-------+-------------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+-------+-------------+------+-----+---------+----------------+ 
| id | int(11)  | NO | PRI | NULL | auto_increment | 
| name | varchar(30) | NO |  | NULL |    | 
| pass | varchar(20) | YES |  | NULL |    | 
+-------+-------------+------+-----+---------+----------------+ 

Пожалуйста, помогите, я получаю сообщение об ошибке: -

throw err; ^Error: ER_BAD_FIELD_ERROR: Unknown column 'jjhk' in 'field list'

ответ

-1
connection.query("INSERT INTO users(id,name,pass) VALUES (1,"+ username +","+password+")" 

должен быть

connection.query("INSERT INTO users(id,name,pass) VALUES (1,'"+ username +"','"+password+"')" 
+1

я также был бы упущением, если бы я не упомянул, что это выглядит, как вы сохраняете свой пароль в незашифрованном виде, и это очень плохо. – Phil

+0

Можете ли вы рассказать мне, как я могу зашифровать пароль пользователя в хеше MD5, используя node.js ?? – user3865070

+0

Также возможно для SQL-инъекции. -1 – tier1

-1

Похоже, что вы используете модуль node-mysql. Чтобы избежать инъекции SQL и использовать соответствующую строку ускользающей, ваш запрос должен выглядеть следующим образом:

var username = req.body.username; 
var password = req.body.password; 


connection.query('USE one'); 
    connection.query("INSERT INTO users(id,name,pass) VALUES (1,?,?)", [username, password], 
    function (err, result) { 
     if (err) throw err; 
    } 
); 
Смежные вопросы