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.