2013-10-04 2 views
2

나는 felixge에 의해 MySQL 용 노드 드라이버와 함께 일하고있다. 문서에 따라이스케이프 된 문자열을 "이스케이프 처리하지 않음"(MySQL, Node.js)해야합니까?

https://github.com/felixge/node-mysql#escaping-query-values

문자열이 주입 attacs을 방지하기 위해 MySQL의에 전달 전에 을 탈출해야

.

내 질문은 : MySQL에서로드 된 후 데이터가 "언 이스케이프"되어야합니까?

현재 데이터 무결성에 문제가 있습니다. 줄 바꿈이 포함 된 문자열로 시작합니다. (console.log(string)으로 인쇄하면 콘솔에 줄 바꿈이 표시됩니다). 문자열을 이스케이프 처리 한 후 MySQL 데이터베이스에 저장됩니다. 그러나 문자열을 메모리에 다시로드 한 후 console.log(string)은 줄 바꿈 대신에 \n의 이스케이프 코드를 표시합니다.

답변

3

전에 주입 공격을 피하기 위해 MySQL에 전달되었습니다.

이 설명이 잘못되었습니다.
먼저 구문 규칙이 있기 때문에 문자열을 이스케이프 처리해야합니다. 둘째, 나는 비 문자열에 대한 몇 가지 제조법이 있기를 바랍니다.

는 문자열 (MySQL의)

번호 이스케이프는 쿼리하지 데이터베이스입니다 "이스케이프"이 탈출해야한다.

은 개행 문자 대신 \ n 이스케이프 코드를 표시합니다.

두 번 다음

+0

감사를 당신의 문자열을 탈출하고있다! 좋은 캐치. 결과를 출력하기 직전에 여분의 이스케이프 코드를 적용한 여분의'util.inspect'가있었습니다. 이것은 MySQL과 아무 관련이 없습니다. – user2847528

관련 문제