airbnb/hypernova

Encode closing Tag

Open

#165 opened on 2019年10月9日

GitHub で見る
 (8 comments) (4 reactions) (0 assignees)JavaScript (5,831 stars) (249 forks)batch import
bughelp wanted

説明

Currently encoding in the index.js only includes

const ENCODE = [
  ['&', '&'],
  ['>', '>'],
];

If a component is being rendered SSR and includes a property with a closing script tag, the script tag in the SSrendered HTML will close the hypernova script.

<script type="application/json" data-hypernova-key="App" data-hypernova-id="....">
   <!-- {"props": ..., "title":"</script "} 

which will throw an error in the JSON.parse method of the payload.

is there a reason closing tags are not encoded here ? Following changes would suffice:

var ENCODE = [
['&', '&amp;'],
['>', '&gt;'],
['<', '&lt;']
];

コントリビューターガイド