2017-10-03 2 views
0

대규모 코드 재생성이 진행되는 웹 앱이 있으므로 큰 구성 요소가 보안 문제를 해결하고 있습니다. 따라서 우리는 html 엔티티의 이중 이스케이프에 문제가 있습니다. 예를 들어자바 스크립트 엔티티 디코드의 보안 관련 내용은 다음 코드화됩니다.

:

enter image description here 문제는 이미 토스트 위젯에 전달하면 인코딩 된 HTML되는 i18n'd 문자열에서 발생 - 새로운 토스트 위젯을 다시 html로 문자를 인코딩합니다.

질문은

이 우리가 대규모 코드베이스를 마이그레이션하는 동안

Entities.encode(Entities.decode(string)); 

은 이중 인코딩 문제를 해결하기 위해서는 (의사 코드에서) 일의 보안 문제가있다? 디코딩을 먼저 통과하는 인코딩되지 않은 문자열과 관련된 문제가 있습니까?

+0

코드를 작성하는 경우 "보안 관련 문제"가있을 수 있습니다. – guest271314

+0

엔티티 인코딩은 HTML이 올바르게 렌더링되도록합니다. 보안과는 아무런 관련이 없습니다. – PHPglue

+0

@ guest271314 메시지에 사용자 컨텐트가 포함될 수 있습니다. – buggedcom

답변

1

코드가 페이지에 쓰여지는 지점에서 인코딩하도록 페이지를 디자인해야합니다. 그러면 올바른 컨텍스트를 인코딩하고 이중 인코딩을 방지 할 수 있습니다. 그러나 모든 코드를 살펴보고 해결할 수없는 경우가 있습니다.

보안 관점에서 "안전한"HTML로 끝납니다 (공격자는 코드 컨텍스트로 탈출 할 수 없습니다). 항상 그렇듯이 올바른 컨텍스트에 올바른 인코딩을 사용하고 엔티티를 인용해야합니다.

그러나 기능적 퇴보로 끝날 가능성이 있습니다. 데이터에 원래 유효한 인코딩 된 문자 (& lt)가 포함 된 경우 인코딩 된 해당 문자 (<)로 표시됩니다.

물론 이중 인코딩의 회귀 현상을 피하기 위해이 작업을 수행 할 가능성이 높습니다. 따라서이 작업은 기꺼이 수행 할 수 있습니다. 제한된 일반 문자 세트를 디코드 할 수 있습니다. 전체 인코딩을 사용하는 동안에는 여전히 안전해야합니다.