mirror of
https://github.com/getredash/redash.git
synced 2026-03-21 16:00:09 -04:00
24 lines
640 B
JavaScript
24 lines
640 B
JavaScript
import { isString } from "lodash";
|
|
import DOMPurify from "dompurify";
|
|
|
|
DOMPurify.setConfig({
|
|
ADD_ATTR: ["target"],
|
|
});
|
|
|
|
DOMPurify.addHook("afterSanitizeAttributes", function(node) {
|
|
// Fix elements with `target` attribute:
|
|
// - allow only `target="_blank"
|
|
// - add `rel="noopener noreferrer"` to prevent https://www.owasp.org/index.php/Reverse_Tabnabbing
|
|
|
|
const target = node.getAttribute("target");
|
|
if (isString(target) && target.toLowerCase() === "_blank") {
|
|
node.setAttribute("rel", "noopener noreferrer");
|
|
} else {
|
|
node.removeAttribute("target");
|
|
}
|
|
});
|
|
|
|
export { DOMPurify };
|
|
|
|
export default DOMPurify.sanitize;
|