▲ | jdsleppy 3 days ago | |||||||||||||||||||||||||||||||||||||||||||
Where do you suggest we sanitize values? Only in the client, when rendering them? | ||||||||||||||||||||||||||||||||||||||||||||
▲ | chrismorgan 3 days ago | parent [-] | |||||||||||||||||||||||||||||||||||||||||||
Depends on what you mean by sanitising. If you mean filtering out undesirable parts of a document (e.g. disallowing <script> element or onclick attribute), that should normally be done on the server, before storage. If instead you mean serialising, writing a value into a serialised document: then this should be done at the point you’re creating the serialised document. (That is, where you’re emitting the HTML.) But the golden standard is not to generate serialised HTML manually, but to generate a DOM tree, and serialise that (though sadly it’s still a tad fraught because HTML syntax is such a mess; it works better in XML syntax). This final point may be easier to describe by comparison to JSON: do you emit a JSON response by writing `{`, then writing `"some_key":`, then writing `[`, then writing `"\"hello\""` after carefully escaping the quotation marks, and so on? You can, but in practice it’s very rarely done. Rather, you create a JSON document, and then serialise it, e.g. with JSON.stringify inside a browser. In like manner, if you construct a proper DOM tree, you don’t need to worry about things like escaping. | ||||||||||||||||||||||||||||||||||||||||||||
|