mirror of
https://github.com/erusev/parsedown.git
synced 2023-08-10 21:13:06 +03:00
Merge pull request #557 from aidantwoods/documentation/safe-mode
Talk about safe mode in the README
This commit is contained in:
commit
d686a50292
27
README.md
27
README.md
@ -38,7 +38,32 @@ More examples in [the wiki](https://github.com/erusev/parsedown/wiki/) and in [t
|
|||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
||||||
Parsedown does not sanitize the HTML that it generates. When you deal with untrusted content (ex: user comments) you should also use a HTML sanitizer like [HTML Purifier](http://htmlpurifier.org/).
|
Parsedown is capable of escaping user-input within the HTML that it generates. Additionally Parsedown will apply sanitisation to additional scripting vectors (such as scripting link destinations) that are introduced by the markdown syntax itself.
|
||||||
|
|
||||||
|
To tell Parsedown that it is processing untrusted user-input, use the following:
|
||||||
|
```php
|
||||||
|
$parsedown = new Parsedown;
|
||||||
|
$parsedown->setSafeMode(true);
|
||||||
|
```
|
||||||
|
|
||||||
|
If instead, you wish to allow HTML within untrusted user-input, but still want output to be free from XSS it is recommended that you make use of a HTML sanitiser that allows HTML tags to be whitelisted, like [HTML Purifier](http://htmlpurifier.org/).
|
||||||
|
|
||||||
|
In both cases you should strongly consider employing defence-in-depth measures, like [deploying a Content-Secuity-Policy](https://scotthelme.co.uk/content-security-policy-an-introduction/) (making use of browser security feature) so that your page is likely to be safe even if an attacker finds a vulnerability in one of the first lines of defence above.
|
||||||
|
|
||||||
|
#### Security of Parsedown Extensions
|
||||||
|
|
||||||
|
Safe mode does not necessarily yield safe results when using extensions to Parsedown. Extensions should be evaluated on their own to determine their specific safety against XSS.
|
||||||
|
|
||||||
|
### Escaping HTML
|
||||||
|
> ⚠️ **WARNING:** This method isn't safe from XSS!
|
||||||
|
|
||||||
|
If you wish to escape HTML **in trusted input**, you can use the following:
|
||||||
|
```php
|
||||||
|
$parsedown = new Parsedown;
|
||||||
|
$parsedown->setMarkupEscaped(true);
|
||||||
|
```
|
||||||
|
|
||||||
|
Beware that this still allows users to insert unsafe scripting vectors, such as links like `[xss](javascript:alert%281%29)`.
|
||||||
|
|
||||||
### Questions
|
### Questions
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user