我有一个应用程序,重新处理HTML,以便做出漂亮的排版.现在,我想把它放在网上让用户输入他们的文字.所以这就是问题:我非常确定我想要删除SCRIPT标签,以及关闭像 form>这样的标签.但是我应该删除什么以使其完全安全?
哦,好主你搞砸了.快来看看这个
基本上,你想要剥离的东西太多了.此外,有些东西是有效的,但可能会以恶意方式使用.如果用户想要在脚注上设置较小的字体大小,该怎么办?你是否关心是否适用于整个页面?设置颜色怎么样?现在,您页面上的所有单词都是白色背景上的白色.
我会再次研究需求阶段.
像降价的替代品可能吗?
您是否可以限制访问最终内容,降低曝光风险?(意思是,你可以设置它,这样用户只能拧自己,不能伤害别人吗?)
您应该使用白名单而不是黑名单方法:确定需要哪些功能,而不是尝试阻止任何不需要的功能.
列出与您的应用程序匹配的所需印刷功能.请注意,可能没有一个通用的列表:它取决于网站的性质(编程问题?青少年的博客?)和文本框的性质(你是留下评论或撰写文章?).您可以在开源CMS中查看一些优秀且有用的文本框.
现在,您必须在自己的标记语言和HTML之间进行选择.我会选择一种标记语言.优点是更好的安全性,缺点是无法添加意想不到的互联网内容,如YouTube视频.防止用户愤怒的好主意是添加"HTML to my-site"功能,将相应的HTML标记转换为标记语言,并删除所有其他标记.
HTML的优点是与标准的一致性,对新内容类型的可扩展性和简单性.最大的问题是代码注入安全问题.如果你选择HTML标签,尝试采用一些工作系统来过滤HTML(我认为Drupal在这种情况下做得相当不错).