40 lines
1.3 KiB
Markdown
40 lines
1.3 KiB
Markdown
# sanitize-url
|
|
|
|
## Installation
|
|
|
|
```sh
|
|
npm install -S @braintree/sanitize-url
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
var sanitizeUrl = require("@braintree/sanitize-url").sanitizeUrl;
|
|
|
|
sanitizeUrl("https://example.com"); // 'https://example.com'
|
|
sanitizeUrl("http://example.com"); // 'http://example.com'
|
|
sanitizeUrl("www.example.com"); // 'www.example.com'
|
|
sanitizeUrl("mailto:hello@example.com"); // 'mailto:hello@example.com'
|
|
sanitizeUrl(
|
|
"https://example.com"
|
|
); // https://example.com
|
|
|
|
sanitizeUrl("javascript:alert(document.domain)"); // 'about:blank'
|
|
sanitizeUrl("jAvasCrIPT:alert(document.domain)"); // 'about:blank'
|
|
sanitizeUrl(decodeURIComponent("JaVaScRiP%0at:alert(document.domain)")); // 'about:blank'
|
|
// HTML encoded javascript:alert('XSS')
|
|
sanitizeUrl(
|
|
"javascript:alert('XSS')"
|
|
); // 'about:blank'
|
|
```
|
|
|
|
## Testing
|
|
|
|
This library uses [Vitest](https://vitest.dev/). All testing dependencies
|
|
will be installed upon `npm install` and the test suite can be executed with
|
|
`npm test`. Running the test suite will also run lint checks upon exiting.
|
|
|
|
npm test
|
|
|
|
To generate a coverage report, use `npm run coverage`.
|