답변:
데이터 유효성 검사 에 대한 설명서를 확인 하면 기능에 대해 다음과 같이 말합니다.
URL을 삭제할 때는 항상 텍스트 노드, 속성 노드 또는 다른 곳에서 esc_url을 사용하십시오. 제공된 화이트리스트 프로토콜 중 하나가없는 URL을 거부하고 [...] 유효하지 않은 문자를 제거하고 위험한 문자를 제거합니다.
실질적인 보안 이점이 있습니다. 유효한 프로토콜, 어두운 문자 없음.
필요성에 대한 답은 확실히 그렇습니다 . 이스케이프 출력은 가장 기본적인 보안 방법입니다.
글쎄, 모든 사용자 입력은 위생 처리되어야합니다 ... 당신이 주입 한 URL이 사용자 입력이 아닌 경우 (예를 들어, 당신이 완전히 신뢰하는 사람에 의한 사이트 설정, 하드 코딩 된 값), 당신은 esc-url로부터 벗어날 수 있습니다.
그러나 해당 URL을 귀하의 사이트에 삽입 할 수 있다면 js 코드, 리디렉션 코드 또는 서버 측 코드를 쉽게 삽입 할 수 있습니다 (일부 상황에서는).
이로 인해 세션 하이재킹과 사용자 계정 도난 및 기타 잘못된 옵션이 발생할 수 있습니다.
귀하의 예에서는 esc_url( home_url( '/' ) );
세미 하드 코딩 된 값으로 작동했습니다! 그러므로 esc_url
제거 될 수 있습니다.
그것은 여전히 위협이있을 때와 그렇지 않을 때와 일반적으로 모든 값에 대해 esc_url ()을 유지하는 것이 좋습니다.
에 대한 또 다른 일들이 머리에 보관해야합니다
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
esc_url 은 유효한 HTML을 생성하는 데 사용됩니다 (입력을 삭제하지 않음). 출력하려는 내용이 해당 컨텍스트에 유효한 HTML인지 100 % 확신 할 수없는 경우에는 언제든지 사용해야합니다.