WordPress
WordPress의 보안 - 도주
수색…
통사론
- esc_html (문자열 $ 텍스트)
- esc_url (string $ url, array $ protocols, string $ _context)
- esc_js (문자열 $ 텍스트)
- wp_json_encode (혼합 $ 데이터, int $ 옵션, int $ 깊이 = 512)
- esc_attr (문자열 $ 텍스트)
- esc_textarea (문자열 $ 텍스트)
비고
보안은 개발할 때 항상 염두에 두어야합니다. 보안이 없다면 SQL Injections, XSS, CSRF, RFI 등과 같은 심각한 공격을 유발할 수있는 다양한 공격에 응용 프로그램이 열려 있습니다.
신뢰할 수없는 데이터는 여러 소스 (사용자, 타사 사이트, 자신의 데이터베이스 !, ...)에서 비롯되며 모든 데이터는 입력과 출력 모두에서 검증되어야합니다. (출처 : WordPress Codex)
데이터는 사용 목적에 따라 유효성을 확인하거나, 위생 처리되거나 도주되어야합니다.
유효성을 검사하려면 사용자에게 요청한 데이터가 제출 한 데이터와 일치하는지 확인해야합니다. (출처 : WordPress Codex)
Sanitization은 사용자 데이터를 받아들이는 접근 방식을 좀 더 자유롭게 사용합니다. 허용 가능한 입력 범위가있을 때 이러한 방법을 사용할 수 있습니다. (출처 : WordPress Codex)
탈출하려면 기존 데이터를 가져 와서 최종 사용자를 위해 렌더링하기 전에 데이터를 보호하는 것이 좋습니다. (출처 : WordPress Codex)
HTML 코드에서 데이터 탈출
esc_html은 HTML 코드 내에 데이터를 출력 할 때마다 사용해야합니다.
<h4><?php echo esc_html( $title ); ?></h4>
url을 탈출하다
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">Home</a>
<img src="<?php echo esc_url( $user_picture_url ); ?>" />
js 코드에서 데이터 탈출
esc_js()
는 태그 속성 내부의 인라인 JS에 사용하기위한 것입니다.
<script>
태그 안에있는 데이터의 경우 wp_json_encode()
사용 wp_json_encode()
.
<input type="text" onfocus="if( this.value == '<?php echo esc_js( $fields['input_text'] ); ?>' ) { this.value = ''; }" name="name">
wp_json_encode()
는 몇 가지 온 전성 검사와 함께 변수를 JSON으로 인코딩합니다.
wp_json_encode()
에는 문자열 구분 기호가 자동으로 포함됩니다.
<?php
$book = array(
"title" => "JavaScript: The Definitive Guide",
"author" => "Stack Overflow",
);
?>
<script type="text/javascript">
var book = <?php echo wp_json_encode($book) ?>;
/* var book = {
"title": "Security in WordPress",
"author" => "Stack Overflow",
}; */
</script>
또는
<script type="text/javascript">
var title = <?php echo wp_json_encode( $title ); ?>;
var content = <?php echo wp_json_encode( $content ); ?>;
var comment_count = <?php echo wp_json_encode( $comment_count ); ?>;
</script>
이스케이프 속성
<input type="text" value="<?php echo esc_attr($_POST['username']); ?>" />
텍스트 영역에서 데이터 탈출
<textarea><?php echo esc_textarea( $text ); ?></textarea>