2016-10-12 51 views
2

在Expressjs項目中,我使用https://www.npmjs.com/package/mssql連接到Microsoft SQL Server並嘗試執行存儲過程。根據mssqlhttps://www.npmjs.com/package/mssql#sql-injection)的文檔將處理所有SQL注入,我認爲它沒有發生。如何在mssql節點模塊中處理SQL注入

有人可以幫助我如何處理此節點模塊中的SQL注入?

var sql = require('mssql'); 
 
var dbConfig = {}; 
 
var Connection = new sql.Connection(dbConfig); 
 
Connection.connect().then(function(_connection){ 
 
    var request = new sql.Request(_connection); 
 
    request.verbose = true; 
 
    request.input('username', 'patriksimek'); 
 
    request.input('password', 'delete from dbo.Users where userId =1'); 
 
    request.input('attempts', 2); 
 
    request.execute('my_stored_procedure'); 
 
})

在此先感謝

+0

發佈您的代碼來生成並執行SQL命令。你使用字符串連接還是參數? – Dai

+0

使用預準備語句。 'var ps = new sql.PreparedStatement(connection)' –

+0

@Dai ,,我更新了上面的代碼。 –

回答

0

您正在使用不能被SQL注入的存儲過程。

你不需要做任何事情。

SQL注入是通過向服務器傳遞一些SQL語句來破解的技術。

例如,對於代碼

'SELECT * FROM user WHERE username = ' + username 

如果我通過username = 'xxx; DELETE FROM user;',然後在用戶表中的所有記錄都將消失

從SQL注入保護

  1. 使用的查詢參數化
  2. 使用存儲過程(您現在使用的)
+0

非常感謝.. –