<html>
<head>
<meta name="generator" content="Windows Mail 17.5.9600.20573">
<style><!--
.EmailQuote {
margin-left:1pt;
padding-left:4pt;
border-left:#800000 2px solid;
}
--></style><style data-externalstyle="true"><!--
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
}
p.MsoNormal, li.MsoNormal, div.MsoNormal {
margin:0in;
margin-bottom:.0001pt;
}
p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst, 
p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle, 
p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast {
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
line-height:115%;
}
--></style></head>
<body dir="ltr">
<div data-externalstyle="false" dir="ltr" style="font-family: 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif';font-size:12pt;">

<div style="color: rgb(0, 0, 0);">True, xss hack prevention is a requirement regardless of where markdown transformation takes place. However…</div><div style="color: rgb(0, 0, 0);"><br></div><div style="color: rgb(0, 0, 0);">While on the back end the only concern is xss, while when parsing at the front end and sending it to the server the whole input has to be validated for html and xss.</div><div style="color: rgb(0, 0, 0);"><br></div><div style="color: rgb(0, 0, 0);">When accepting posts from users using Markdown as a formatting language there is a chance that someone may simply make a http web request using the action url found in your html post form and send what ever data he wants (assuming the back end expects html, that’s why there’s an extra validation step required at the server when using JavaScript to parse and post the resulted html. I’m not talking about simply checking for well formed html, stripping tags is next after that).</div><div style="color: rgb(0, 0, 0);"><br></div><div style="color: rgb(0, 0, 0);" data-signatureblock="true"><div style="color: rgb(0, 0, 0);">Andrei Fangli</div><div style="color: rgb(0, 0, 0);"><br></div></div><div style="padding-top: 5px; border-top-color: rgb(229, 229, 229); border-top-width: 1px; border-top-style: solid;"><div><font face=" 'Calibri', 'Segoe UI', 'Meiryo', 'Microsoft YaHei UI', 'Microsoft JhengHei UI', 'Malgun Gothic', 'sans-serif'" style='line-height: 15pt; letter-spacing: 0.02em; font-family: "Calibri", "Segoe UI", "Meiryo", "Microsoft YaHei UI", "Microsoft JhengHei UI", "Malgun Gothic", "sans-serif"; font-size: 12pt;'><b>From:</b> <a href="mailto:contact@alanhogan.com" target="_parent">Alan Hogan</a><br><b>Sent:</b> ‎Saturday‎, ‎6‎ ‎September‎ ‎2014 ‎10‎:‎59<br><b>To:</b> <a href="mailto:markdown-discuss@six.pairlist.net" target="_parent">markdown-discuss@six.pairlist.net</a></font></div></div><div><br></div><div dir="">
<div class="PlainText"><br>
> On Sep 6, 2014, at 12:08 AM, Andrei Fangli <andrei_fangli@hotmail.com> wrote:<br>
> <br>
> The JavaScript version is only good for preview at client-side to avoid posting to the server one to many times. To do client-side parsing and sending it to the server in the final format is a serious security leak (trusting that a post request sends a valid and harmless html is wishful thinking).<br>
<br>
There’s little difference: if you are accepting markdown from untrusted users, you MUST also pass the resulting HTML through an XSS filter of some sort, no matter whether the markdown transform happens on the front or back end. <br>
<br>
Alan<br>
_______________________________________________<br>
Markdown-Discuss mailing list<br>
Markdown-Discuss@six.pairlist.net<br>
<a href="http://six.pairlist.net/mailman/listinfo/markdown-discuss" target="_parent">http://six.pairlist.net/mailman/listinfo/markdown-discuss</a><br>
</div>


</div>





</div>
</body>
</html>