質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2852閲覧

esc_url()の必要性

cryson

総合スコア22

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

2クリップ

投稿2022/04/27 09:54

編集2022/05/03 06:26

お世話になります。

WordPressのテーマにてechoする際、esc_url()やesc_html()やesc_attr()でエスケープ処理するのが通例となっています。
例えばesc_html()やescattr()などは、例えば「フォームで外部ユーザー側からGETしたものをそのまま出力するのは危ない」というのはイメージがつきます。

しかし、例えば画像ソースを出力するための

PHP

1<img src="<?php echo esc_url(get_template_directory_uri() . '/hoge.jpg'); ?>">

や、内部アンカーリンクに

PHP

1<a href="<?php echo esc_url(home_url()); ?>">

といったエスケープ処理の必要性が分かりません。

これらは初めからこちら側(WP側)で特定の記述を決めつけているはずなのに、それが外部からどのように改変・攻撃される危険性があるか、といった想定がつきません。

なにか分かりやすい例などがあればご教授いただけると幸いです。
よろしくお願いいたします。

Takahashi-Ei👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

主にXSSについての疑問かと思いますが、「慣習」のようなものと捉えて良いと思います。
基本的には出力時に対応をするべきものであるため、「あれはする」「これはしない」と分けていると対応漏れが起きたりします。
なので、「動的な文字列、変数を出力する際は全て対応する」とすることで漏れをなくすような形にしているのではないでしょうか。

WordPressの話ではないですが、PHPに限らずテンプレートエンジンはデフォルトの出力時の記述は全てhtmlエスケープが行われる記述方法となっており、「エスケープしない」記述は意図しないと書けないようになっています。

投稿2022/04/27 20:33

m.ts10806

総合スコア80888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cryson

2022/04/28 10:06

むしろ「エスケープする」が当然で、「エスケープしない」が管理者側の意図したものでないといけないということですね。 コードが冗長化することは好ましくないのではと今回の疑問に行きつきましたが、全てに統一性を持たせ漏れをなくすことは重要だと思いました。ありがとうございました。
guest

0

プラグインによって組み込み関数が予期しない動作に変更されてしまっている可能性があるからではないでしょうか?

投稿2022/04/28 16:17

a.com

総合スコア915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問