0

我将文本作为 HTML 存储在 SQL 中。我不能保证这些数据格式正确,因为用户可以从任何地方复制/粘贴到我正在使用的编辑器控件中,或者手动编辑生成的 HTML。

<script/>问题是:删除或以某种方式忽略和标记的最佳方法是什么,<form/>以便当用户的文本显示在 Web 应用程序的其他位置时,它不会破坏包含页面的正常操作。

我玩弄了简单地为<script>/ <form>with执行“查找和替换”的想法<div>(显然考虑到空格和结束标签,如果它们存在的话)。我也愿意以某种方式“忽略”某些标签。<div id="MyContent">据我所知,对于、treat<form><script>as中的所有元素,可能有一些内置的说法(在 HTML、CSS 或 JavaScript 中)<div>

任何帮助或建议将不胜感激!

4

7 回答 7

1

由于您使用的是 .Net,因此我建议您使用HtmlAgilityPack它,因为它易于使用并且适用于格式错误的 HTML。

于 2009-10-13T15:13:40.430 回答
1

在清理用户输入方面,表单和脚本标签并不是唯一应该清理的。

完成这项工作的最佳方式在一定程度上取决于您使用的工具。看看这些问题:

于 2009-10-13T13:14:45.417 回答
1

这取决于您使用的语言。一般来说,我建议使用 HTML 解析器,从片段构造一个小的 DOM,然后对不需要的元素进行核对。有许多优秀的 HTML 解析器,特别设计用于处理现实世界中杂乱的 HTML。示例包括BeautifulSoup (Python)、HTMLParser (Java)... 而且,由于答案是在我打字时出现的,所以 Colin 说了什么!

于 2009-10-13T13:15:44.883 回答
1

不要尝试自己动手 - 有太多的技巧可以将一些脚本和一般的肮脏内容放入页面。使用Microsoft AntiXSS 库- 版本 3.1 内置了 HTML 清理功能。您可能需要 GetSafeHTMLFragment 方法,该方法返回经过清理的 HTML 块。见我之前的回答

于 2009-10-13T15:05:17.623 回答
0

我以前也遇到过同样的问题。但我的情况有所不同。我正在向页面添加带有 ajax 请求的内容。ajax 响应中的内容是 html,它还包括脚本标签。我只是想在没有任何脚本的情况下获取 html,所以我确实使用 jquery 从 ajax 响应中删除了所有脚本标签。

jquery-remove-script-tags-from-string

于 2014-09-07T07:27:35.617 回答
0
txtStore.Text=Regex.Replace(txtStore, "<.*?>", string.Empty);
于 2013-09-17T07:43:30.573 回答
0

尽管建议的答案是可以接受的,但我最终还是使用了一个很好的旧正则表达式来替换 begin 和 end<script>以及<form>标签为<div>'s。

于 2009-11-03T03:13:33.960 回答