2026, 새로운 도약을 시작합니다.

특수글자들을 안전하게 처리하기

javascript나 nodejs 에서 따옴표와 같은 특수기호들은 해커들이 SQL 인젝션에서 자주 사용되군 합니다.

때문에 이러한 특수글짜들이 포함된 문자열을 디비에 넣거나 웹브라우저에서 현시할때에는 무의미성 기호로 처리하는것이 중요합니다. PHP에서는 htmlspecialchars(); mysql_real_escape_string() 등이 특수글자를 안전하게 처리하면서도 PDO을 사용해서 디비에 쿼리를 실행할때 파라미터로 바인딩하는 보안로직을 심어주어 해결합니다.

[code]

function escapeHTML (str) {
    var val = '';
    if(typeof str === 'undefined') val = '';
    else {
          if(typeof str === 'string'){
          val = str.replace(/\0/g, '').trim();
          } else {
                  val = str;
          }
    }
    return (function() {
        var entityMap = {
            "&": "&",
            "<": "&lt;",
            ">": "&gt;",
            '"': '&quot;',
            "'": '&#39;',
            "\\": '\\\\'
        };
        return String(val).replace(/[&<>"'\\]/g, function (s) {
            return entityMap[s];
        });
        //};
    })();
};

[/code]

그누보드에서도 특수글자처리를 위한 제나름의 보안로직이 있습니다. 그저 사용자들이 잘 알고, 개발자들이 이 함수도 이용하면 감사할뿐입니다.

|

댓글 10개

좋은 팁 감사 합니다.
보안쪽은 아무것도 모르는데 좋은 팁을 알려주셔서 감사드립니다^^
@김철용 네 잘 써주시면 감사하겟습니다.
감사합니다. ^^
초짜라 아직 잘 모르지만 공부하는 마음으로 메모해 봅니다. 감사합니다. ^^
좋은 정보 같아 스크랩 합니다. 감사합니다.
그런데 이걸 어떻게 활용하는지 살짝 더 팁을 주시면 더욱더 감사 드리겠습니다. ^^
@호텔천사 제가 드린 escapeHTML 함수는 자바스크립트로 작성된것이므로 NodeJS플랫폼에서 다음과 같이 사용될수 있습니다.
가령, 사용자들이 입력한 정보를 디비에 넣기전에 디비의 보안을 위해 escapeHTML('사용자가 입력한 값') 의 리턴값을 저장합니다. 또는 디비에 저장된 자료를 escapeHTML('디비자료')의 리턴값을 웹브라우저에 출력시키면 스크립트인젝션공격을 보다 안전하게 대책할수 있습니다. 감사합니다.
그누에도 input, output 시 관련 함수가 있습니다.
오~~ 좋은 팁입니다!

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.
번호 분류 제목 글쓴이 날짜 조회
5402 MySQL 6일 전 조회 24
5401 JavaScript 3주 전 조회 117
5400 MySQL 1개월 전 조회 225
5399 PHP 2개월 전 조회 471
5398 PHP 2개월 전 조회 354
5397 PHP 2개월 전 조회 286
5396 기타 5개월 전 조회 560
5395 PHP 6개월 전 조회 1,197
5394 MySQL 7개월 전 조회 794
5393 웹서버 9개월 전 조회 986
5392 1년 전 조회 1,314
5391 11개월 전 조회 1,320
5390 11개월 전 조회 1,114
5389 10개월 전 조회 1,032
5388 10개월 전 조회 1,173
5387 9개월 전 조회 963
5386 JavaScript 9개월 전 조회 1,150
5385 웹서버 9개월 전 조회 1,170
5384 JavaScript 10개월 전 조회 992
5383 기타 11개월 전 조회 1,417
5382 기타 11개월 전 조회 662
5381 JavaScript 11개월 전 조회 1,078
5380 기타 11개월 전 조회 834
5379 JavaScript 11개월 전 조회 832
5378 1년 전 조회 1,399
5377 기타 1년 전 조회 941
5376 jQuery 1년 전 조회 641
5375 jQuery 1년 전 조회 872
5374 기타 1년 전 조회 950
5373 MySQL 1년 전 조회 982
🐛 버그신고