我正在使用 ASP.NET MVC 和 CKEditor (Basic) 来获取输入(几乎完全像这个堆栈溢出 RTE。)用户仅限于粗体、斜体、链接。
我假设我需要验证这个服务器端,以防有人向我的控制器发出带有任何所需 HTML 的 CURL 请求。(IE 因此它们不受客户端验证的限制)。
所以我需要允许,粗体,斜体,链接标签,列表,但绝对没有别的,这怎么能实现?我将在我的视图模型上有一个自定义验证器,但是构建这个自定义验证器的最佳方式是什么?寻找什么等?
我正在使用 ASP.NET MVC 和 CKEditor (Basic) 来获取输入(几乎完全像这个堆栈溢出 RTE。)用户仅限于粗体、斜体、链接。
我假设我需要验证这个服务器端,以防有人向我的控制器发出带有任何所需 HTML 的 CURL 请求。(IE 因此它们不受客户端验证的限制)。
所以我需要允许,粗体,斜体,链接标签,列表,但绝对没有别的,这怎么能实现?我将在我的视图模型上有一个自定义验证器,但是构建这个自定义验证器的最佳方式是什么?寻找什么等?
这可以通过正则表达式和负前瞻来实现。
类似的东西<(?!br/|br /|a|/a|strong|/strong|b|/b|i|/i|ul|/ul|li|/li>).+?>
会匹配除<br />
, <a></a>
, <strong></strong>
, <b></b>
, <i></i>
, <ul></ul>
, 和之外的所有标签<li></li>
。
然后你可以用一个空字符串替换匹配的出现。
例如这个输入(在 regextester.com 上测试):
test <a href="http://www.test.com">test link</a>
Some <strong>text in bold</strong> and <b>another one</b> but also something
in <i>italic</i>
<ul>
<li>Now</li>
<li>a list</li>
</ul>
<table>
<tr>
<td>And a table</td>
</tr>
</table>
<br />
<hr />
会成为 :
test <a href="http://www.test.com">test link</a>
Some <strong>text in bold</strong> and <b>another one</b> but also something
in <i>italic</i>
<ul>
<li>Now</li>
<li>a list</li>
</ul>
And a table
<br />