当前位置: 首页 > 知识库问答 >
问题:

在MarkDown中包含SVG(托管在GitHub上

詹联
2023-03-14

我知道可以使用![Alt text](/path/to/img.jpg)![Alt text](/path/to/img.jpg“optional title”)的MD语法将图像放置在MD中,但我很难将SVG放置在代码托管在GitHub上的MD中。

最终使用rails3,并且现在经常更改模型,所以我使用RailRoady生成模型的模式图的SVG。我希望将SVG放在readme.md中并显示出来。当我在本地打开SVG文件时,它确实起作用,那么我如何让浏览器呈现MD文件中的SVG呢?考虑到代码在完成之前是动态的(似乎永远不会),将SVG托管在一个单独的地方似乎有些过头了,而且我缺少一种实现这一点的方法。

我试图包含的SVG在GitHub上:https://github.com/specialorange/fdxcm/blob/master/rails/fdxcm/doc/models_brief.SVG

我尝试了以下操作,并使用了一个实际的图像来验证语法是否工作,只是SVG代码没有被呈现:

![Overview][1]
[1]: https://github.com/specialorange/FDXCM/blob/master/doc/controllers_brief.svg  "Overview"

<img src="https://raw.github.com/specialorange/FDXCM/master/doc/controllers_brief.svg">

![Alt text](https://raw.github.com/specialorange/FDXCM/master/doc/controllers_brief.svg)

[Google Doc](https://docs.google.com/drawings/d/1B95ajItJTAImL2WXISX0fkBLYk3nldea4Vm9eo-VyE4/edit) :

<img src="https://docs.google.com/drawings/pub?id=117XsJ1kDyaY-n8AdPS3_8jTgMyITqaoT3-ah_BSc9YQ&w=960&h=720">

<img src="https://raw.github.com/specialorange/FDXCM/master/doc/controllers_brief.svg">

<img src="https://docs.google.com/drawings/d/1B95ajItJTAImL2WXISX0fkBLYk3nldea4Vm9eo-VyE4/edit">

共有1个答案

高承望
2023-03-14

更新2020:他们如何在避免XSS攻击的同时使其工作

GitHub似乎使用了两种安全方法,这是一篇很好的文章:https://digi.ninja/blog/svg_xss.php参见:https://security.stackexchange.com/questions/148507/how-to-prevention-xss-in-Svg-file-upload

>

  • 标记内显示SVG,这会阻止脚本运行,例如在readmes上:https://github.com/cirosantilli/test-git-web-interface/tree/8e394cdb012cba4bcf55ebdb89f36872b4c6c12a

    使用content-security-policy:default-src'none';style-src“unsafe-inline”;沙箱。这会阻止脚本在包含原始SVG文件的raw中运行:https://raw.githubusercontent.com/cirosantilli/test-git-web-interface/8e394cdb012cba4bcf55ebdb89f36872b4c6c12a/svg-foreignobject.SVG

    您可以看到带有curl-vvv的头。常规的github.com页面也有content-security-policy,但它要大得多。

    更新2017

    一个GitHub开发人员目前正在研究这个问题:https://GitHub.com/GitHub/markup/issues/556#issuecomment-306103203

    更新2014-12:GitHub现在在blob显示上呈现SVG,所以我看不出有什么理由不在自述文件呈现上呈现:

      null

    Petah提到Blob很好,因为SVG在iframe中。

    GitHub不提供SVG映像的可能原因

    SVG XSS脚本:虽然当SVG嵌入img时,大多数浏览器都不运行脚本,但标准似乎并不要求这样做,所以GitHub可能是在安全地使用它。

    如果您直接打开SVG(但GitHub似乎从未直接在GitHub.com域上显示图像),或者如果它是内联的(GitHub目前完全删除了这些图像),浏览器会运行它,所以这些情况不应该是安全问题。相关链接:

    • 规范:http://www.w3.org/tr/svg/script.html
    • 交互式SVG演示:http://www.w3.org/tr/SVG/images/script/script01.SVG

    以下问题询问SVG的一般风险:https://security.stackExchange.com/questions/11384/exploits-or-other-security-risks-with-Svg-upload

  •  类似资料:
    • 我天真地以为只需在post.md页面中添加带有内容的标记就会很容易,如下所示: 但我看到的不是图像,而是SVG代码(在Firefox中)。到目前为止还没有找到任何办法来解决看起来很简单的事情。在jekyll/liquid减价范围内有可能吗? > 我想用d3.js来操作svg代码,所以我假设我需要嵌入svg代码,而不是作为外部映像文件引用它。 我可以直接用d3.js生成初始的svg内容(这是可行的)

    • 我有一个小型开源图书馆的分叉,我正在github上工作。我想通过maven让其他开发人员可以使用它,但是我不想运行我自己的Nexus服务器,因为它是一个分叉,所以我不能轻松地将它部署到oss.sonatype.org. 我想做的是将它部署到github,这样其他人就可以使用maven访问它。最好的方法是什么?

    • 根据这些说明,我将Maven包部署到github。https://help.github.com/en/github/managing-packages-with-github-packages/configuring-apache-maven-for-use-with-github-packages#installing-a-package 这起作用了。 现在,我正在安装第二个Maven项目,它

    • gh-md-toc gh-md-toc — is for you if you want to generate TOC (Table Of Content) for a README.md ora GitHub wiki page without installing additional software. It's my try to fix a problem: github/issues

    • 本文向大家介绍两分钟学会如何在github托管代码,包括了两分钟学会如何在github托管代码的使用技巧和注意事项,需要的朋友参考一下 本篇博客针对不会Git的小童鞋,大神们可以绕过,错误之处谢谢指正; 关于GitHub的强大此处不在说明,知道GitHub也有一段时间了,但是一直苦于不会使用。 本篇文章介绍的是如何将工程代码托管到上面;如果你还没注册GitHub账号请到https://github

    • 像这样的问题有很多,但是似乎没有一个对我有效或者直接回答我的问题。 我正在使用Jhipster和MongoDB Atlas。Jhipster使用一个名为Mongobee的库,其中使用了一个适用于MongoDB的方法,但不适用于MongoDB Atlas。要启动,Mongobee似乎不再维护。 因此,我找到了某人的建议PR,他们将其发送给Mongobee进行审查,我接受了代码更改,将MongoBe分