svg - 无论如何要在 c# 中清理 SVG 文件,有什么库吗?
问题描述
无论如何要在 c# 中清理 SVG 文件,有什么库吗?从客户端我们在上传时清理 SVG 文件,但安全团队也要求在服务器端进行清理。
解决方案
你的安全团队说的是真的:客户端安全不是安全。这只是用户方便。永远不要依赖客户端检查。任何想要对您的应用程序做坏事的人都会首先绕过客户端检查。
<script>
现在,只有利用标签,SVG 文件才能用于 XSS 攻击。
不幸的是,解散/保护脚本是一个非常复杂的话题,并且容易出错,并且会出现误报和误报。
所以,我相信你唯一的办法就是完全删除脚本。这可能不是您需要的。
但是,如果是,那么做起来很简单。脚本标签不能在 SVG 中伪装,否则浏览器一开始就无法识别它,使得攻击毫无意义。所以一个简单的正则表达式就足够了。就像是,
cleanSVGcode = Regex.Replace(
userSVGcode,
@"<script.*?script>",
@"",
RegexOptions.IgnoreCase|RegexOptions.SingleLine
);
可以清除更多的序列。因为,如果它们编写不正确或以混淆的方式编写,javascript 调用将不起作用,因此这些序列的数量是有限的。
@"javascript:" => @"syntax:error:"
推荐阅读
- javascript - 购物 | 首次亮相主题静态标题反弹
- sql - 在 JPQL 请求中使用新语句
- excel - 循环选择用户窗体控件以在工作表中打印值
- html - 用边界半径隐藏的溢出仍然显示小边框
- scala - 寻找一个 docker 镜像来容器化我的 spark scala 流作业
- amazon-web-services - 我应该将 AWS SAM 用于“简单”的 Lambda 函数吗?
- windows - 码头工人执行-它
目录不起作用。为什么?如何获取目录信息? - sql - JOIN 和 SELECT 有什么区别?
- airflow - 尽管在airflow.cfg 中将执行程序设置为LocalExecutor,但气流仍在使用SequentialExecutor
- angular - Angular-material-calendar,为日期自定义css,dateClass不正确适用