小编Mat*_*tko的帖子

SQLite如何转义值以防止SQL注入

有人可以告诉我如何转义输入值以防止SQL注入吗?我有一个用户身份验证应用程序,我需要以某种方式导入一些安全性。

我的验证如下所示:

//Validation 
req.checkBody('name', 'Name is required').notEmpty();
req.checkBody('email', 'Email is required').notEmpty();
req.checkBody('email', 'Email is not valid').isEmail();
req.checkBody('password', 'Password is required').notEmpty();
req.checkBody('password', 'Password must have at least 6 characters').len(6,20);
req.checkBody('password2', 'Passwords do not match').equals(req.body.password);
Run Code Online (Sandbox Code Playgroud)

然后我的INSERT一些值如下:

var stmt = db.prepare("INSERT INTO users ( id, name, email, password, salt) VALUES (NULL, ?, ?, ?, ?)");
               stmt.run([ name, hashEmail(email,'salt'), hashPassword(password,'salt'), 'salt'], function(error){  //.....
Run Code Online (Sandbox Code Playgroud)

有人告诉我这不是真正安全的导入价值的方法,但是只要我对互联网安全没有真正的经验,我将需要您的帮助。

问候

sqlite sql-injection node.js

3
推荐指数
1
解决办法
2666
查看次数

单击提交按钮后如何使用Node.js刷新页面

我需要你的帮助。

我有一个按钮,可以复制某些内容,并且该“内容”应立即出现在页面上。问题在于该按钮具有复制功能,但是现在我必须手动刷新页面才能看到更改。

我不认为这有些棘手,但我尝试了以下尝试但没有成功:

<form method="post" action="/users/copy?scene=<%= scene.id %>">
  <button type="submit" class="btn btn-primary" onClick="window.location.href=window.location.href">Copy the scene</button>
</form>
Run Code Online (Sandbox Code Playgroud)

我的意思是,如果更改"submit""button",它可以工作,但是复制内容的功能不再起作用。

我用谷歌搜索,但到目前为止找不到任何答案。

任何帮助将非常感激

因此,我才意识到甚至在添加刷新页面的功能之前,本地主机就已加载,因此服务器上必须有未完成的请求。我认为这是在此功能:

router.post('/copy', function(req,res,call) {

if( req.param('scene') !== undefined ){

db.serialize(function () {

 db.run("CREATE TABLE temp_table as SELECT * FROM scene where id=?", req.param('scene'));
 db.run("UPDATE temp_table SET id = NULL, user_id = (SELECT id FROM users WHERE email =?)",GLOBAL.email);
 db.run("INSERT INTO scene SELECT * FROM temp_table");
 db.run("DROP TABLE temp_table");
 // res.render('copy');
    if(error) {
        console.log(error);
    } 
});

db.close();

 } …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery node.js

2
推荐指数
1
解决办法
4585
查看次数

SQLite ORDER BY 时间戳没有给出预期结果

timestamp在 SQLite 中对 a 进行排序时遇到了一些小困难,我尝试了所有方法,但仍然无法获得正确的结果。

我有一个时间戳,我尝试对其进行排序,因此最新的将是第一个。

我已经尝试过以下代码:

db.each("SELECT values ORDER BY datetime(timestamp) DESC LIMIT 200");
db.each("SELECT values ORDER BY datetime('timestamp') DESC LIMIT 200");
db.each("SELECT values ORDER BY datetime("timestamp") DESC LIMIT 200");
db.each("SELECT values ORDER BY date(timestamp) DESC LIMIT 200");
db.each("SELECT values ORDER BY timestamp DESC LIMIT 200");
Run Code Online (Sandbox Code Playgroud)

最后一个选项给了我一些最接近的结果,不幸的是它仅按时间对时间戳进行排序,例如 11 月 17 日创建的行将被正确排序,而 11 月 18 日创建的行将“较旧”。

请参阅以下屏幕:

在此输入图像描述

我的timestamp格式如下:

Thu Nov 17 2016 11:47:56
Run Code Online (Sandbox Code Playgroud)

这应该是非常微不足道的,即使我没有弄清楚出了什么问题。

编辑:

我生成的函数timestamps如下所示:

var timestamp = new Date().toString().replace(' GMT+0100 (CET)', '');
Run Code Online (Sandbox Code Playgroud)

sqlite datetime timestamp sql-order-by

2
推荐指数
1
解决办法
5148
查看次数