未验证 提交 f5b84e59 编写于 作者: T Tim Lai 提交者: GitHub

feat: markdown sanitization of form tag (#7146)

上级 4abbc62b
...@@ -68,7 +68,7 @@ export function sanitizer(str, { useUnsafeMarkdown = false } = {}) { ...@@ -68,7 +68,7 @@ export function sanitizer(str, { useUnsafeMarkdown = false } = {}) {
return DomPurify.sanitize(str, { return DomPurify.sanitize(str, {
ADD_ATTR: ["target"], ADD_ATTR: ["target"],
FORBID_TAGS: ["style"], FORBID_TAGS: ["style", "form"],
ALLOW_DATA_ATTR, ALLOW_DATA_ATTR,
FORBID_ATTR, FORBID_ATTR,
}) })
......
...@@ -16,6 +16,12 @@ describe("Markdown Script Sanitization", function() { ...@@ -16,6 +16,12 @@ describe("Markdown Script Sanitization", function() {
const el = render(<Markdown source={str} />) const el = render(<Markdown source={str} />)
expect(el.html()).toEqual(`<div class="markdown"><p><img src="x"></p>\n</div>`) expect(el.html()).toEqual(`<div class="markdown"><p><img src="x"></p>\n</div>`)
}) })
it("sanitizes <form> elements", function() {
const str = `"<form action='https://do.not.use.url/fake' method='post' action='java'><input type='email' id='email' placeholder='Email-address' name='email' value=''><button type='submit'>Login</button>"`
const el = render(<Markdown source={str} />)
expect(el.html()).toEqual(`<div class="markdown"><p>&quot;</p><input value name="email" placeholder="Email-address" id="email" type="email"><button type="submit">Login</button>&quot;<p></p>\n</div>`)
})
}) })
describe("OAS 3", function() { describe("OAS 3", function() {
...@@ -30,5 +36,11 @@ describe("Markdown Script Sanitization", function() { ...@@ -30,5 +36,11 @@ describe("Markdown Script Sanitization", function() {
const el = render(<OAS3Markdown source={str} />) const el = render(<OAS3Markdown source={str} />)
expect(el.html()).toEqual(`<div class="renderedMarkdown"><p><img src="x"></p></div>`) expect(el.html()).toEqual(`<div class="renderedMarkdown"><p><img src="x"></p></div>`)
}) })
it("sanitizes <form> elements", function () {
const str = `"<form action='https://do.not.use.url/fake' method='post' action='java'><input type='email' id='email' placeholder='Email-address' name='email' value=''><button type='submit'>Login</button>"`
const el = render(<OAS3Markdown source={str} />)
expect(el.html()).toEqual(`<div class="renderedMarkdown"><p>&quot;</p><input value name="email" placeholder="Email-address" id="email" type="email"><button type="submit">Login</button>&quot;<p></p></div>`)
})
}) })
}) })
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册