web-dev-qa-db-ja.com

<?php echo $ title?> vs <?php echo esc_html($ title); Wordpressのセキュリティ

この素晴らしい記事を読むWordpressでのデータ検証とサニタイズ私のブログでは、 header.php、私はコードのペアで<?php echo $title ?>を使いました。

上記 の記事 によると、データを検証することなくデータ自体を検証することはハッカーに対して脆弱です。

私が書いたように、私は最初の<?php echo $title ?><?php echo esc_html( $title ); ?>に変更しました。

これは、の変更前のコードです。

<span class="ads">
<?php
if ( is_user_logged_in() ) {
echo '<span><a href="/?page_id=175" title="inserisci un annuncio gratis">Pubblica il   tuo annuncio gratis: &egrave; facile e veloce!</a></span>';
} else {
echo '<span><a class="simplemodal-login simplemodal-submit" href=""><?php echo $title ?>Pubblica il tuo annuncio gratis: &egrave; facile e veloce!</a>   </span>';
}
?>
</span>

これはの変更後のコードです。

<span class="ads">
<?php
if ( is_user_logged_in() ) {
echo '<span><a href="/?page_id=175" title="inserisci un annuncio gratis">Pubblica il   tuo annuncio gratis: &egrave; facile e veloce!</a></span>';
} else {
echo '<span><a class="simplemodal-login simplemodal-submit" href=""><?php echo  esc_html( $title ); ?>Pubblica il tuo annuncio gratis: &egrave; facile e veloce!</a>   </span>';
}
?>
</span>

今私の質問は(私はそれが初心者のものだと思います!):私が加えた変更は私のブログのセキュリティにとって良いものですか?


1
diana

記事の場合、$titleは任意の値なので、htmlでエスケープする必要がありますが、WordPressのコア関数から取得した場合はおそらく安全ですが、とにかく確認する必要があります

たとえば、get_the_title()にはhtmlマークアップを含めることができ、デフォルトではエスケープされません。

いずれにせよ、投稿やページのタイトルにはHTMLを含めないでください。スタイル設定はテーマであり、コンテンツではありません。

入力時にすべてのデータを検証する必要があります。それが、努力を集中させるべき場所です。あなたのしたことはあなたのセキュリティを向上させますが、どれだけデータがどこから来ているかに依存します。

入力と出力のすべてのデータをエスケープすることをお勧めしますが、特定の例外的なケースではなく習慣をつけずにそれを実行します。

3
Tom J Nowell

投稿タイトルcanにはマークアップが含まれており、デフォルトではWordPressによってnotがエスケープされます。エスケープされたタイトルを取得するには

1
fuxia