esc_url을 사용해야하는 이유는 무엇입니까?


12

이로 인해 코딩이 어려워집니다. Wordpress 코덱은 보안에 대해 모호하게 이야기함으로써 esc_url을 사용하는 이유입니다. 그러나 그것은 정말로 문제의 가치가 있습니까?

예를 들어 다음을 사용하여 중요한 실질적인 보안 이점은 무엇입니까?

<?php echo esc_url( home_url( '/' ) ); ?>

대신에

<?php echo home_url() ?>

추신 : 테마 개발이 아니라 특정 사이트에 대해 이야기하고 있습니다.

답변:


12

데이터 유효성 검사 에 대한 설명서를 확인 하면 기능에 대해 다음과 같이 말합니다.

URL을 삭제할 때는 항상 텍스트 노드, 속성 노드 또는 다른 곳에서 esc_url을 사용하십시오. 제공된 화이트리스트 프로토콜 중 하나가없는 URL을 거부하고 [...] 유효하지 않은 문자를 제거하고 위험한 문자를 제거합니다.

실질적인 보안 이점이 있습니다. 유효한 프로토콜, 어두운 문자 없음.

필요성에 대한 답은 확실히 그렇습니다 . 이스케이프 출력은 가장 기본적인 보안 방법입니다.


2
모든면에서, 예를 들어 홈 링크가 어떻게 보안 위험을 야기 할 수 있는지 알 수 없습니다. 이 가이드 라인은 테마 작성을위한 것이며 "비공개"코드에는 적용되지 않습니까? 결국 집 주소와 다른 링크를 html로 하드 코딩하고 보안 위험이있는 경우 PHP를 전혀 사용하지 않는 것이 가장 좋습니다.
IXN September

9
모든 경우에 가치가있는 경우 토론보다 보안 관행을 일관되고 보편적으로 적용하는 것이 훨씬 생산적입니다. :)
Rarst September

7
반면 A가에 자원 에 의해 제안 분과 설정 신뢰 워드 프레스 : 규칙 제 3 호를 . home_url()적절한 컨텍스트에서 사용되는 경우 와 같은 wp 핵심 기능을 과도하게 사용하지 않는 것이 좋습니다 . 이 권고에 따르면, 나는 home_url자체 살균을 수행 할 것으로 기대했을 것 입니다.
Franco

3

글쎄, 모든 사용자 입력은 위생 처리되어야합니다 ... 당신이 주입 한 URL이 사용자 입력이 아닌 경우 (예를 들어, 당신이 완전히 신뢰하는 사람에 의한 사이트 설정, 하드 코딩 된 값), 당신은 esc-url로부터 벗어날 수 있습니다.

그러나 해당 URL을 귀하의 사이트에 삽입 할 수 있다면 js 코드, 리디렉션 코드 또는 서버 측 코드를 쉽게 삽입 할 수 있습니다 (일부 상황에서는).

이로 인해 세션 하이재킹과 사용자 계정 도난 및 기타 잘못된 옵션이 발생할 수 있습니다.

편집하다:

귀하의 예에서는 esc_url( home_url( '/' ) );
세미 하드 코딩 된 값으로 작동했습니다! 그러므로 esc_url제거 될 수 있습니다.
그것은 여전히 ​​위협이있을 때와 그렇지 않을 때와 일반적으로 모든 값에 대해 esc_url ()을 유지하는 것이 좋습니다.


3
"신뢰할 수있는 사람의 사이트 설정"은 여전히 문자 그대로 사용자 입력입니다. :)
Rarst

@Rarst 그래, 난 당신과 함께 있지만, 그는 esc_url을 사용하여 너무 혐오했다, 나는 조금 더 용서했다.
Tomer W

2

에 대한 또 다른 일들이 머리에 보관해야합니다 esc_url()같은 것을위한 <a href="SANITIZE_THIS_URL">your_text</a>당신이 링크에 대한 HREF 속성, 또는 이미지 요소의 src 속성처럼, 당신의 HTML 출력에 URL을 사용하는거야 .if, 당신은 사용해야합니다 esc_url().

esc_url_raw()깨끗한 URL을 원하지만 HTML 엔터티를 인코딩하지 않으려는 다른 경우입니다. 따라서 HTML 이외의 사용법 (DB, 리디렉션)은 이것을 사용합니다.

esc_url_raw()함수는와 거의 동일하게 작동 esc_url()하지만 엔터티를 디코딩하지 않으므로 & & 0으로 대체되지 않습니다. 마크가 지적했듯이, 그것은 사용하는 것이 안전 esc_url_raw()등에 대한 자세한 정보를 원하시면 wp_remote_get () ''로, 데이터베이스 쿼리, 리디렉션 및 HTTP 기능에서 ) (esc_url_raw


1

esc_url 은 유효한 HTML을 생성하는 데 사용됩니다 (입력을 삭제하지 않음). 출력하려는 ​​내용이 해당 컨텍스트에 유효한 HTML인지 100 % 확신 할 수없는 경우에는 언제든지 사용해야합니다.


이스케이프 기능의 모든 제품군은 명시 적으로 살균을위한 것입니다.
Rarst September
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.