WordPress
Безопасность в WordPress - экранирование
Поиск…
Синтаксис
- esc_html (строка $ text)
- esc_url (строка $ url, массив $ protocol, строка $ _context)
- esc_js (строка $ text)
- wp_json_encode (смешанные $ data, int $ options, int $ depth = 512)
- esc_attr (строка $ text)
- esc_textarea (строка $ text)
замечания
Безопасность должна всегда иметь в виду при разработке. Без безопасности приложение открыто для различных атак, таких как SQL Injections, XSS, CSRF, RFI и т. Д., Что может привести к серьезным проблемам.
Неверные данные поступают из многих источников (пользователей, сторонних сайтов, вашей собственной базы данных !, ...), и все это необходимо проверять как на входе, так и на выходе. (Источник: WordPress Codex)
Данные должны быть проверены, дезинфицированы или экранированы в зависимости от использования и цели.
Для проверки необходимо убедиться, что данные, которые вы запросили у пользователя, соответствуют тому, что они отправили. (Источник: WordPress Codex)
Санитаризация является более либеральной из подхода к принятию пользовательских данных. Мы можем вернуться к использованию этих методов, когда есть диапазон допустимых входных данных. (Источник: WordPress Codex)
Чтобы убежать, нужно взять данные, которые у вас могут уже есть, и помочь защитить их до их предоставления конечному пользователю. (Источник: WordPress Codex)
escape-данные в 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 ); ?>" />
escape-данные в js-коде
esc_js()
предназначен для использования внутри встроенного JS внутри атрибута тега.
Для данных внутри <script>
используйте 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>
escape-атрибуты
<input type="text" value="<?php echo esc_attr($_POST['username']); ?>" />
данные об утечке в textarea
<textarea><?php echo esc_textarea( $text ); ?></textarea>