第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法轉(zhuǎn)義單引號

無法轉(zhuǎn)義單引號

我正在嘗試找出一種方法來轉(zhuǎn)義我的“預(yù)建”SQL查詢中的單引號,我將其發(fā)送到泛型函數(shù)(我的所有查詢都使用它)。我嘗試了轉(zhuǎn)義npm插件,手動完成等。這是我構(gòu)建查詢的代碼位,當(dāng)我輸入例如“it's”時,由于特殊字符,dataString會出錯:exports.addEntry = (req, res, nomPage, nomTable, data) => {  Object.keys(data).forEach(function (k, id) {    console.log(data[k]);    if (data[k] != null) {      if (id > 0) {        columnString += `,`;        dataString += `,`;      }      columnString += `${[k]}`;      dataString += `'${data[k]}'`;    }  });  try {    if (!data) throw new Error("Input not valid");    if (data) {      var sqlQuery = `INSERT INTO ${nomTable} (${columnString}) VALUES (${dataString})`;      connect.connectDatabase(sqlQuery, (data, err) => { [...]我之前談到的泛型函數(shù)是這樣的:var sql = require("mssql"); var config = require("../settings").config; exports.connectDatabase = function (rawQuery, callback) {  var conn = new sql.ConnectionPool(config);  conn    .connect()    .then(function () {      var req = new sql.Request(conn);      req        .query(rawQuery)        .then(function (recordset) {          callback(recordset.recordset);        })我的計劃是讓查詢只使用一個函數(shù),而不是很多做幾乎相同事情的函數(shù)。如果能提供幫助,將不勝感激。
查看完整描述

2 回答

?
冉冉說

TA貢獻(xiàn)1877條經(jīng)驗 獲得超1個贊

構(gòu)建此查詢的方式正是您不想執(zhí)行的操作。它使您對SQL注入完全開放。


若要避免此問題,需要參數(shù)化查詢。這里的額外好處是,它將照顧所有逃跑。


下面是一個直接來自 MS 文檔的示例,演示如何使用 SQL Server 的節(jié)點.js驅(qū)動程序執(zhí)行參數(shù)化查詢。


遵循此范例的代碼將如下所示:


exports.addEntry = (req, res, nomPage, nomTable, data) => {

  Object.keys(data).forEach(function (k, id) {

    console.log(data[k]);

    if (data[k] != null) {

      if (id > 0) {

        columnString += `,`;

        dataString += `,`;

      }

      columnString += `${[k]}`;

      dataString += `@${data[k]}`;

    }

  });


  try {

    if (!data) throw new Error("Input not valid");

    if (data) {

      var sqlQuery = `INSERT INTO ${nomTable} (${columnString}) VALUES (${dataString})`;

      connect.connectDatabase(sqlQuery, (data, err) => { 

[...]

所有改變的是操作構(gòu)造.dataString


請注意,您現(xiàn)在需要將參數(shù)饋送到命令執(zhí)行中,以替換之前嵌入的數(shù)據(jù)。


查看完整回答
反對 回復(fù) 2022-08-27
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗 獲得超3個贊

有幾種方法可以做到這一點:1 - 替換方括號的冒號,這將創(chuàng)建一個字符串值數(shù)組,那么你只需要擔(dān)心通過數(shù)組長度進(jìn)行排序,這將增加你的處理時間,但如果你的應(yīng)用程序不是太大,它不應(yīng)該有太大的區(qū)別。

2 - 用于對字符串中的單引號進(jìn)行轉(zhuǎn)義或?qū)﹄p引號進(jìn)行轉(zhuǎn)義。\'\"

讓我知道這是否有幫助,因為這是一個快速的答案。


查看完整回答
反對 回復(fù) 2022-08-27
  • 2 回答
  • 0 關(guān)注
  • 83 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號