PHP的“安全”降价处理器?

2021/01/01 00:21 · php ·  · 0评论

是否有适用于公共评论的markdown的PHP实现?

基本上,它只应允许markdown语法的子集(粗体,斜体,链接,块引用,代码块和列表),并剥离所有内联HTML(或可能对其进行转义?)

我猜一个选择是使用普通的markdown解析器,并通过HTML sanitiser运行输出,但是有没有更好的方法呢?

我们在网站的其余部分使用PHP markdown Extra,因此我们已经不得不使用辅助解析器(非“ Extra”版本,因为不需要脚注支持)。在*bold*文本和拥有一切逃到&lt;a href="etc"&gt;,不是生成<b>bold</b>的文本,并试图剥夺我们不想位..

另外,在相关说明中,我们将WMD控件用于“主要”站点,但是对于注释,还有哪些其他选择?WMD的javascript预览很好,但是它需要与PHP markdown处理器相同的“缓和”(它不能显示图像等,否则有人会提交并且其工作markdown将“中断”)

目前,我的计划是使用PHP-markdown-> HTML santiser方法,并编辑WMD以从中删除图像/标题语法showdown.js-但似乎以前已经完成了无数次。

基本上:

  • PHP中是否有“安全”降价实现?
  • 是否有HTML / javascript markdown编辑器,该编辑器可能具有容易禁用的相同选项?

更新:我最终只是markdown()通过HTML Purifier运行输出

这样,Markdown渲染与输出清理是分开的,后者更简单(两个未修改的代码库)更安全(您不打算同时进行渲染和清理),并且更灵活(可以进行多个清理)级别,例如对可信内容的配置比较宽松,对于公众评论的版本则更为严格)

PHP Markdown具有清除程序选项,但似乎没有在任何地方进行广告宣传。看一看Markdown_Parser该类的顶部markdown.php(从1.0.1m版本的191行开始)。我们对第209-211行感兴趣:

# Change to `true` to disallow markup or entities.
var $no_markup = false;
var $no_entities = false;

如果将它们true分别更改为,则标记和实体应分别转义而不是逐字插入。似乎没有任何内置方法可以更改这些内容(例如,通过构造函数),但是您始终可以添加以下一种方法:

function do_markdown($text, $safe=false) {
    $parser = new Markdown_Parser;
    if ($safe) {
        $parser->no_markup = true;
        $parser->no_entities = true;
    }
    return $parser->transform($text);
}

请注意,上面的函数在每次运行时都会创建一个新的解析器,而不是像提供的Markdown函数(第43-56行)那样对它进行缓存,因此可能有点慢。

JavaScript Markdown编辑器假设:

  • 使用JavaScript驱动的Markdown编辑器,例如基于对决
  • 从工具栏中删除所有图标和视觉线索,查找不需要的物品
  • 设置JavaScript过滤器以清除提交时不需要的标记
  • 在计算机上本地测试和强化所有JavaScript更改和过滤器
  • 将这些过滤器镜像到PHP提交脚本中,以在服务器端捕获它们。
  • 从帮助/教程中删除所有对不需要的项目的引用

我已经用JavaScript创建了Markdown编辑器,但是它具有增强的功能。这花费了大量时间和SVN修订版。但是我认为改变Markdown编辑器以限制允许的HTML并不那么困难。

在通过markdown处理输入内容之前,如何对用户输入的输入内容运行htmlspecialchars?它应该逃避任何危险,但保留降价理解的一切。

我正在尝试一种情况,这种方法行不通,但无法考虑任何事情。

本文地址:http://php.askforanswer.com/phpdeanquanjiangjiachuliqi.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!