Skip to content

Commit 9e02240

Browse files
authored
[Doc]: add non-trusted template rule to security guide #1992 (#2011)
* cherry-pick & translate vuejs/v2.vuejs.org@9790624
1 parent 2671823 commit 9e02240

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

src/v2/guide/security.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: セキュリティ
3-
updated: 2019-11-18
3+
updated: 2020-02-05
44
type: guide
55
order: 504
66
---
@@ -11,6 +11,19 @@ order: 504
1111

1212
新たな脆弱性の発見はめったにありませんが、常に Vue とその公式ライブラリの最新バージョンを使用し、アプリケーションのセキュリティを可能な限り維持することをお勧めします。
1313

14+
## ルール No.1: 信頼できないテンプレートを絶対に使わない
15+
16+
Vue を使うときの最も基本的なセキュリティルールは、**信頼できないコンテンツをコンポーネントのテンプレートとして絶対に使わない** ということです。そうすることは、あなたのアプリケーション内で任意の JavaScript 実行を許してしまうことと同じです。さらに悪いことに、コードがサーバーサイドレンダリング中に実行された場合には、サーバー側の欠陥につながります。例えば、次のような使い方です:
17+
18+
``` js
19+
new Vue({
20+
el: '#app',
21+
template: `<div>` + userProvidedString + `</div>` // 絶対にしてはいけない
22+
})
23+
```
24+
25+
Vue のテンプレートは JavaScript にコンパイルされ、テンプレート中の式はレンダリング処理の過程で実行されます。式は特定のレンダリングコンテキストで評価されますが、潜在的にはグローバルに実行される複雑な実行環境となるため、Vue のようなフレームワークでパフォーマンスの非現実的なオーバーヘッドを受けることなく悪意のあるコード実行を完全に防ぐことは困難です。この手の問題を回避する最も直接的な方法は、完全にあなたの管理下にある信頼されたコンテンツだけを Vue テンプレートのコンテンツにすることです。
26+
1427
## Vue が行っているセキュリティ対策
1528

1629
### HTML コンテンツ

0 commit comments

Comments
 (0)