前提・実現したいこと
Twitterのようにユーザーが文字列を投稿したり、誰かの投稿を閲覧できるWebサイトを作っています。
やりたい事は、投稿された文字列の一部を置換して文字色を変更する事です。
v-html
を使うことで一応は解決しましたがセキュリティが心配です。
どのように実装するのがベストでしょうか?
懸念している問題
- ユーザーが任意のHTMLタグを入力した場合も有効になる
試したこと
https://jsfiddle.net/eywraw8t/100477/
- index.html
html
1<div id="app"> 2 <p> 3 {{text}} 4 </p> 5 6 <p v-html="text"> 7 </p> 8 9 <p v-html="changeTextColor(text)"> 10 </p> 11</div> 12
- index.js
js
1new Vue({ 2 el: '#app', 3 data: { 4 text: 'ここが赤くなります。<a href="http://example.com">悪意あるリンク</a>' 5 }, 6 methods: { 7 changeTextColor (str) { 8 return str.replace(/ここ/i, '<font color="red">ここ</font>'); 9 } 10 } 11})
補足情報(FW/ツールのバージョンなど)
- Vue.js 2.5.16
回答1件
あなたの回答
tips
プレビュー