teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

誤字の修正をしました。

2021/04/16 14:56

投稿

pegy
pegy

スコア245

title CHANGED
File without changes
body CHANGED
@@ -62,7 +62,7 @@
62
62
  ここで仮に以下のような値をユーザーから受け付けたとします。
63
63
  ![画像](36bc9ac563b397c6a3856cd766f60efe.png)
64
64
 
65
- ここで上記のsample.htmlにおいて、2通りの値の取得方法があります。
65
+ ここで上記のsample.htmlにおいて、2通りのエディタの入力値の取得方法があります。
66
66
  0. htmlでそのまま出力して値を取得する `editorInput.value = editorHtml; //html形式で取得する`
67
67
  1. JSON形式で取得する(ライブラリが提供) `editorInput.value = JSON.stringify(quill_textile.getContents()) //JSON形式で取得`
68
68
 
@@ -95,8 +95,8 @@
95
95
  実現したいこととしてこれらの値をRDBに格納し、安全に出力することとなります。
96
96
 
97
97
  ### 検討1
98
- そこで、まずライブラリが提供する、上記のJSON形式のデータをパースしてHTMLを再構築した上で、"insert"の値をhtmlspecialchars()で出力することを検討ました。hrefやsrc属性の中身もリスクがある認識ですが、そのチェックは当然するものとしてここでは割愛ます。
99
- ただ、実際の構造を見ていたくと分かる通り、`<ol><li>`のネスト構造を識別し難いことや、`attributes`が属性だけを属性だけを指すのではなく例えば`size`の指定があれば、`<span>`を作った上で、特定の`class`属性を指定するなど、実に使いづらい印象で、直接HTMLを取得して、自ら許可するタグを置換してホワイトリスト方式のアプローチで値を格納して出力する方がより効率的で合理的であると考えました。
98
+ そこで、まずライブラリが提供する、上記のJSON形式のデータをパースしてHTMLを再構築した上で、"insert"の値をhtmlspecialchars()で出力することを検討ました。hrefやsrc属性の中身もリスクがある認識ですが、そのチェックは別途するものとしてここでは割愛させていただきます。
99
+ ただ、実際の構造を見ていたくと分かる通り、`<ol><li>`のネスト構造を識別し難いことや、`attributes`が属性だけを属性だけを指すのではなく例えば`size`の指定があれば、`<span>`を作った上で、特定の`class`属性を指定するなど、実に使いづらい印象で、直接HTMLを取得して、自ら許可するタグを置換してホワイトリスト方式のアプローチで値を格納して出力する方がより効率的で合理的であると考えました。
100
100
 
101
101
  ### 検討2
102
102
  上記検討1を踏まえて例えば、以下のように、ホワイトリストタグをHTMLを変換すれば、あとで出力する際にもある程度安全にできるのではと考えております。