github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/html/template/content.go (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package template 6 7 // 信頼できるソースからのコンテンツの文字列。 8 type ( 9 // CSSは、以下のいずれかに一致する既知の安全なコンテンツをカプセル化します: 10 // 1. CSS3のスタイルシートの生成、例えば `p { color: purple }`。 11 // 2. CSS3のルールの生成、例えば `a[href=~"https:"].foo#bar`。 12 // 3. CSS3の宣言の生成、例えば `color: red; margin: 2px`。 13 // 4. CSS3の値の生成、例えば `rgba(0, 0, 255, 127)`。 14 // https://www.w3.org/TR/css3-syntax/#parsing および 15 // https://web.archive.org/web/20090211114933/http://w3.org/TR/css3-syntax#style を参照してください。 16 // 17 // このタイプの使用はセキュリティリスクを伴います: 18 // カプセル化されたコンテンツは信頼できるソースから来るべきであり、 19 // それはテンプレートの出力にそのまま含まれます。 20 CSS string 21 22 // HTMLは、既知の安全なHTMLドキュメントフラグメントをカプセル化します。 23 // それは、第三者からのHTMLや、閉じられていないタグやコメントが含まれるHTMLには使用すべきではありません。 24 // 信頼できるHTMLサニタイザの出力と、このパッケージによってエスケープされたテンプレートは、HTMLでの使用に適しています。 25 // 26 // このタイプの使用はセキュリティリスクを伴います: 27 // カプセル化されたコンテンツは信頼できるソースから来るべきであり、 28 // それはテンプレートの出力にそのまま含まれます。 29 HTML string 30 31 // HTMLAttrは、信頼できるソースからのHTML属性をカプセル化します。 32 // 例えば、` dir="ltr"`。 33 // 34 // このタイプの使用はセキュリティリスクを伴います: 35 // カプセル化されたコンテンツは信頼できるソースから来るべきであり、 36 // それはテンプレートの出力にそのまま含まれます。 37 HTMLAttr string 38 39 // JSは、例えば `(x + y * z())` のような、既知の安全なEcmaScript5の式をカプセル化します。 40 // テンプレートの作者は、型付けされた式が意図した優先順位を壊さないこと、そして 41 // "{ foo: bar() }\n['foo']()" のような式を渡すときのように、 42 // ステートメント/式の曖昧性がないことを確認する責任があります。 43 // これは、非常に異なる意味を持つ有効な式と有効なプログラムの両方です。 44 // 45 // このタイプの使用はセキュリティリスクを伴います: 46 // カプセル化されたコンテンツは信頼できるソースから来るべきであり、 47 // それはテンプレートの出力にそのまま含まれます。 48 // 49 // 有効だが信頼できないJSONを含めるためにJSを使用することは安全ではありません。 50 // 安全な代替手段は、json.UnmarshalでJSONを解析し、 51 // 結果のオブジェクトをテンプレートに渡すことです。これは、JavaScriptのコンテキストで提示されるときに、 52 // サニタイズされたJSONに変換されます。 53 JS string 54 55 // JSStrは、JavaScriptの式のクォートの間に埋め込むことを意図した一連の文字をカプセル化します。 56 // 文字列は一連のStringCharactersに一致しなければなりません: 57 // StringCharacter :: SourceCharacter ただし `\` または LineTerminator は除く 58 // | EscapeSequence 59 // LineContinuationsは許可されていません。 60 // JSStr("foo\\nbar")は問題ありませんが、JSStr("foo\\\nbar")は許可されていません。 61 // 62 // このタイプの使用はセキュリティリスクを伴います: 63 // カプセル化されたコンテンツは信頼できるソースから来るべきであり、 64 // それはテンプレートの出力にそのまま含まれます。 65 JSStr string 66 67 // URLは、既知の安全なURLまたはURL部分文字列(RFC 3986を参照)をカプセル化します。 68 // 信頼できるソースからの`javascript:checkThatFormNotEditedBeforeLeavingPage()`のようなURLは 69 // ページに含まれるべきですが、デフォルトでは動的な`javascript:` URLは、 70 // 頻繁に悪用されるインジェクションベクトルであるためフィルタリングされます。 71 // 72 // このタイプの使用はセキュリティリスクを伴います: 73 // カプセル化されたコンテンツは信頼できるソースから来るべきであり、 74 // それはテンプレートの出力にそのまま含まれます。 75 URL string 76 77 // Srcsetは、既知の安全なsrcset属性をカプセル化します 78 // (https://w3c.github.io/html/semantics-embedded-content.html#element-attrdef-img-srcset を参照)。 79 // 80 // このタイプの使用はセキュリティリスクを伴います: 81 // カプセル化されたコンテンツは信頼できるソースから来るべきであり、 82 // それはテンプレートの出力にそのまま含まれます。 83 Srcset string 84 )