javascript
  • sql-server
  • node.js
  • prepared-statement
  • sql-injection
  • 2017-09-13 10 views 1 likes 
    1

    Javascript에 정의 된 문자열을 MSSQL 테이블에 삽입해야합니다.Node.JS에서 준비된 문을 MSSQL 용으로 어떻게 작성합니까?

    자바 스크립트 :

    내가 지금까지 무엇을 가지고

    var message = "It's a great day today!"; 
    $.post('www.server.com/message='+message, function(response){ 
    console.log(response); 
    }); 
    

    Node.js를 서버 : 파일 Node.js를

    //..... a bunch of code has been used to accept the HTTP request and get the message... 
    // for the purpose of this example, the message is asigned to 'NodeMsg' 
    var mssqldb = require("../core/mssql"); 
    var NodeMsg = theMessageReceivedFromHTTPRequest; 
    function saveMessage(message) { 
        mssqldb.executeMssql("insert into messages (message, status) VALUES('"+message+"', 'new')", function (err) { 
         if (err) { 
         httpMsgs.show500(req, resp, err); 
         }//end if 
         else { 
         httpMsgs.sendJson(req, resp, 'success'); 
         }//end else 
        }); 
    }; 
    

    mssql.js () :

    무슨 일이 일어나고 있는지의
    var mssqldb = require("mssql"); 
    var settings = require("../settings"); 
    
    exports.executeMssql = function(sql, callback) { 
        var conn = new mssqldb.Connection(settings.mssqlConfig); 
        conn.connect() 
        .then(function(){ 
        var req = new mssqldb.Request(conn); 
        req.query(sql) 
        .then(function (recordset) { 
         callback(recordset); 
        }) 
        .catch(function(err){ 
         console.log(err); 
         callback(null, err); 
        }); 
        }) 
        .catch(function(err){ 
        console.log(err); 
        callback(null, err); 
        }); 
    };//end executeMssql 
    

    요약 :

    1. 나는 문자열로 메시지를 정의하고있다. 내가
    2. 가 나는

    를 MSSQL하는 문자열을 보내 문제를 Node.js를을 사용하고있는 Node.js를 서버에 해당 문자열을 보내고

  • 를 (그것이 작은 따옴표가 포함되어 있습니다) : Object Oriented Program에 대해 더 많은 것을 배우고 나니, SQL 인젝션에 개방되어 있기 때문에 필자가 삽입 작업을 수행하는 방식이 매우 낯선 것을 깨닫게되었습니다. 또한 문자열의 작은 따옴표로 인해 SQL 쿼리를 실행하는 동안 코드가 중단됩니다.

    해결책 : 내가 찾은 대부분의 자료에 따르면 해결책은 "Prepared Statements"를 사용하는 것입니다.

    내 문제 :

    이 땅에, 준비된 명령문을 활용하는 내가 이미 한 일을 변환하려면 어떻게합니까? 나는 HOURS에 대한 웹을 검색했고 Node.Js에 대한 초보자가 이해할 수있는 MSSQL (MySQL이 아님)에 대해 Node.JS로 준비된 문을 수행하는 방법에 대한 좋은 예를 하나도 발견 할 수 없다.

  • 답변

    0

    지루한 크로스 플랫폼 MSSQL 드라이버 구현은 다음과 같습니다. http://tediousjs.github.io/tedious/parameters.html

    기본적으로 삽입해야하는 값에 대해 '@xxx'자리 표시자를 포함하는 SQL 문을 준비하고 요청에 해당 매개 변수의 실제 값을 바인드하고, 그런 다음 요청을 실행하십시오.

     관련 문제

    • 관련 문제 없음^_^