Node.js에서 사용자로부터 입력 받은 문자열을 안전하게 HTML로 출력하기 위해서는 해당 문자열에서 특수 문자를 이스케이프 해야 합니다. 이는 XSS(크로스 사이트 스크립팅) 공격을 방지하기 위해 필요합니다. 1. 클라이언트 측에서의 처리 1.1. 특수문자 입력 허용 기본적으로 HTML의 input 요소는 특수문자를 포함한 모든 문자를 입력 받을 수 있습니다. 1.2. 입력 검증 JavaScript를 사용하여 사용자가 입력한 값에 대한 검증을 수행할 수 있습니다. 이때 특수문자가 있는지에 대한 정규식을 통해서 검색할 수 있습니다. 혹은 처럼 자바스크립트에서 이스케이프를 사용해서 특수문자를 변환해서 전송할 수 있습니다. 하지만, 클라이언트 측 검증만으로는 postman과 같은 툴로 강제로 데이터를 보내..
데이터베이스와 웹 애플리케이션의 보안에서 중요한 주제인 SQL 인젝션에 대해 알아보겠습니다. SQL 인젝션은 공격자가 데이터베이스 쿼리에 악의적인 코드를 삽입하여 원하지 않는 동작을 일으키는 보안 공격 방법 중 하나입니다. 이 글에서는 SQL 인젝션의 원리와 그로 인한 위협, 그리고 이를 방어하는 전략에 대해 알아보도록 하겠습니다. 1. SQL 인젝션의 원리 SQL 인젝션은 사용자 입력값을 필터링 없이 SQL 쿼리에 직접 삽입할 때 발생합니다. 공격자는 이러한 취약점을 이용하여 악의적인 쿼리를 실행시킬 수 있습니다. 예를 들어, 로그인 폼에서 아이디와 비밀번호를 입력받아 다음과 같은 쿼리를 생성한다고 가정해봅시다. SELECT * FROM users WHERE username = '[입력한 아이디]' A..
데이터베이스에서 쿼리를 작성하거나 수정할 때, 특수 문자를 사용해야하는 상황이 자주 발생합니다. 예를 들어, 문자열 내부에 따옴표(')나 다른 특수 문자를 포함해야 할 때가 있습니다. 데이터베이스 쿼리 작성 시, 특수 문자를 올바르게 처리하지 않으면 예기치 않은 오류나 보안 문제가 발생할 수 있습니다. 그렇기에 이번 글에서는 안전하게 특수문자를 처리하는 방법을 알아보도록 하겠습니다. 1. 특수문자의 중요성 데이터베이스 작업 중 특수문자를 사용하는 경우가 빈번합니다. 특히 문자열 내에 따옴표나 다른 특수 문자를 포함시켜야 할 때, 이를 올바르게 처리하지 않으면 문제가 발생할 수 있습니다. 'test', 'test' 와 같은 문자열을 쿼리문으로 직접 작성하면 반드시 에러가 난답니다. 2. MYSQL의 역슬래..