safeURL
指定された文字列を安全な URL または URL 部分文字列として宣言します。
safeURL
は指定された文字列を「安全な」 URL または URL の部分文字列として宣言します (RFC 3986
を参照してください)。信頼できるソースからの javascript:checkThatFormNotEditedBeforeLeavingPage()
のような URL はページに入れるべきですが、動的な javascript:
URL は頻繁に悪用されるインジェクション ベクトルであるため、デフォルトでフィルタリングされて除外されます。
safeURL
がない場合、Go テンプレートでは http:
、https:
、mailto:
という URI スキームのみが安全であるとみなされます。 その他の URI スキーム (たとえば、 irc:
や javascript:
) が検出された場合、URL 全体が #ZgotmplZ
に置き換えられます。 これは、それを置換して無効なコードにレンダリングすることによって、URL の潜在的な攻撃を「無害化」するためです。
以下の例では、サイトの config.toml
に以下のような メニューエントリ
を設定しています。
以下は、前述のフロントマターの例と組み合わせて使用することができる、サイドバーのパーシャルの例です。
このパーシャルは、以下の HTML を出力します。
<!-- この順序付けられていないリストは、サイドバー メニューの一部である可能性があります -->
<ul>
<li><a href="#ZgotmplZ">IRC: #golang at freenode</a></li>
</ul>
上記の奇妙な出力は、以下のように、ページ変数 .URL
に | safeURL
を追加することで改善できます。
.URL
ページ変数が safeURL
を通してパイプされることで、目的の出力が得られます。
<ul class="sidebar-menu">
<li><a href="irc://irc.freenode.net/#golang">IRC: #golang at freenode</a></li>
</ul>