我在使用Markdown作为其语法的Web应用程序上工作,我面临的唯一问题是如何在服务器端验证用户输入,以便它实际上是Markdown而不是可以使用a注入的某些XSS攻击POST请求或禁用javascript。
我知道StackOverflow会这样做,但他们是如何做到这一点并允许某些HTML标签包括易受XSS攻击的图像?任何可以提供帮助的开源软件包(例如,赞赏)。
我听说StackOverflow使用它,我将尝试Pagedown作为客户端验证器。
答案 0 :(得分:3)
你需要投资。一到两个星期的正确编码,并得到一些tagoup解析器/处理程序finsihed,可以清理崩溃的HTML(通过Markdown)。
我强烈建议采用三通验证和处理方案:
然后您可以输出。存储Markdown源和“支持的”HTML数据,因此您不需要为每个显示操作执行此操作。
答案 1 :(得分:2)
Markdown允许任意HTML包含在其中。由于这包含<script>
元素,因此您可以使用有效的Markdown,这也是一种XSS攻击。
通过Markdown解析器运行传入数据以获取HTML,然后将其视为任何其他用户提交的HTML(将其传递给应用a whitelist to the elements and attributes的HTML解析器)。