[javascript] JSON 데이터에 코드 주입 방지하기

JSON(JavaScript Object Notation)은 데이터 교환을 위해 일반적으로 사용되는 형식입니다. 그러나 때로는 사용자로부터 입력된 JSON 데이터에 악의적인 코드가 주입될 수 있습니다. 이를 방지하기 위해 몇 가지 접근 방법을 살펴볼 것입니다.

1. JSON.stringify()를 이용하여 이스케이프 처리

const userData = {
  name: "<script>alert('XSS attack')</script>",
  email: "user@example.com"
};

const safeJSON = JSON.stringify(userData);

JSON.stringify()를 사용하면 데이터가 문자열로 변환될 때 특수 문자가 이스케이프(escape)되어 코드 주입을 방지할 수 있습니다.

2. JSON.parse()를 통해 안전한 파싱 수행

const safeJSON = '{"name":"user","email":"user@example.com"}';

const userData = JSON.parse(safeJSON);

JSON.parse()를 통해 안전하게 JSON 데이터를 파싱할 수 있습니다. 이는 잠재적으로 악의적인 코드가 들어 있는 JSON 데이터에서 안전하게 객체를 만들어냅니다.

3. 데이터 유효성 검사

JSON 데이터를 받기 전에 입력 데이터의 유효성을 검사하여 악의적인 코드가 포함되지 않도록 합니다. 예를 들어, 입력된 값을 whitelist로 필터링하거나, regular expression을 사용하여 특정 패턴을 차단합니다.

이러한 방법들을 통해 JSON 데이터에 악의적인 코드가 주입되는 것을 방지할 수 있습니다. 하지만 사용자 입력 데이터를 다루는 모든 시나리오에서 완벽한 보안을 제공하는 것은 어렵기 때문에 항상 최신의 보안 규칙을 준수하는 것이 중요합니다.

Reference: