시큐어코딩 가이드 Secure Coding Guide 출력 인코딩

출력인코딩

시큐어코딩 가이드 Secure Coding Guide 출력 인코딩 – 보안 취약점 중 많이 발생하는 취약점의 종류이며, 출력 데이터는 클라이언트 측 변조를 방어하기 위해서 인코딩해야 합니다.





 

Output Encoding

“출력 인코딩” 섹션은 안전한 코딩 관행 체크리스트에서 귀하의 응용 프로그램을 빠져나가는 데이터가 안전하고 올바르게 형식화되도록 하는 데 중점을 둡니다. 신뢰할 수 있는 시스템에서 인코딩을 수행하고 확립된 인코딩 루틴을 활용하며 데이터를 클라이언트에 반환하기 전에 컨텍스트에 맞게 인코딩하거나 정제하는 등의 관행을 포함합니다. 이를 통해 모든 데이터가 안전하고 잘 구조화된 상태로 제시되도록 함으로써 특히 신뢰할 수 없는 출처에서 비롯된 경우에도 보안 취약성을 방지합니다. 적절한 출력 인코딩은 데이터가 목적한 해석기 및 표시 매체에 대해 올바르게 처리되도록 보장함으로써 교차 사이트 스크립팅(XSS) 및 인젝션 공격과 같은 문제에서 보호합니다.

 

출력 인코딩 상세 예시

2.1 Trusted System에서 모든 인코딩 수행
출력 데이터의 모든 인코딩이 서버에서 수행되도록 하여 클라이언트 측의 변조 및 보안 취약성을 방지합니다. 웹 페이지용 HTML을 생성할 때 서버는 크로스사이트 스크립팅(XSS) 취약성을 방지하기 위해 특수 문자를 인코딩해야 합니다.

2.2 각 유형의 아웃바운드 인코딩에 표준 및 테스트된 루틴 사용
다양한 데이터 유형에 대해 HTML 엔터티 인코딩과 같은 표준화된 인코딩 루틴을 사용하여 일관되고 안전한 인코딩을 보장합니다. 웹 콘텐츠에 대한 HTML 엔터티 인코딩과 같은 데이터 인코딩에 신뢰할 수 있는 라이브러리나 내장 함수를 사용하세요.

2.3 클라이언트에 반환되는 모든 데이터에 대한 문맥에 맞는 출력 인코딩
신뢰할 수 없는 출처에서 비롯되고 클라이언트에 반환되는 모든 데이터에 대해 출력 인코딩을 적용합니다. 문맥에 따라 적절한 인코딩을 사용하세요. 웹 페이지에 사용자가 생성한 콘텐츠를 표시할 때 HTML 엔터티 인코딩을 사용하여 HTML 삽입을 방지하세요.






2.4 안전하다고 알려진 경우를 제외하고 모든 문자 인코딩
의도한 해석기에서 악성 코드 삽입이나 데이터 조작을 방지하기 위해 출력 데이터의 모든 문자를 인코딩합니다. 사용자가 생성한 콘텐츠에서 “<” 및 “>”와 같은 특수 문자를 인코딩하여 XSS 공격을 방지하세요.

2.5 쿼리에 대한 신뢰할 수 없는 데이터의 문맥에 맞는 출력 산화
SQL, XML 및 LDAP 쿼리에 대한 삽입 공격을 방지하기 위해 모든 신뢰할 수 없는 데이터의 출력을 정화합니다. 쿼리 유형을 기반으로 문맥에 맞는 정화를 적용하세요. 사용자 입력에서 SQL 쿼리를 생성할 때 사용자 입력에 해로운 SQL 명령이 포함되지 않도록 정화를 수행하세요.

2.6 운영 체제 명령에 대한 신뢰할 수 없는 데이터의 문맥에 맞는 출력 정화
악의적인 코드 실행이나 시스템 침투를 방지하기 위해 운영 체제 명령에 대한 신뢰할 수 없는 데이터의 모든 출력을 통합하기 전에 정화합니다. 사용자 입력으로 셸 명령을 실행할 때 입력이 시스템을 침해할 수 있는 해로운 명령을 포함하지 않도록 정화를 수행하세요.





 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다