我在asp.net mvc应用程序的Create.aspx页面中使用FckEditor。
由于我需要在网页中显示富文本,因此我在控制器类中使用了ValidateInput(false)属性top of action方法。
我在Details.aspx中使用了Html.Encode(Model.Message)来保护用户的攻击。</ p>
但是,我得到了我不想要的结果:
<p> Hello </p>
我想要的结果不是上面的结果:
Hello
如何向用户输入文本显示文字?
提前致谢
答案 0 :(得分:0)
用户似乎已将"<p> Hello </p>"
(由于按Enter键)输入编辑控件,并且在HTML中显示正确,因为您已完成Html.Encode。例如。 paragrahs不会被渲染,它们被输出为"<p>..</p>"
,因为字符串被HTML编码为类似"<p> Hello <p>"
的内容。
如果你不想要标签,我建议在文本字符串中搜索标签(带有<...>
的东西)并从输入的文本中删除它们。在HTML.Encode之前执行此操作。
......或者我错过了什么?
答案 1 :(得分:0)
答案 2 :(得分:0)
简短的回答是HTMLEncode正在让你的标记显示出来。如果你没有HTMLEncode,它会做你想要的。
您需要考虑是否需要完全控制标记,谁正在输入标记,以及是否可以选择像BBCode这样的替代标记。
如果使用编辑器的用户都确定是“安全”用户,那么XSS不太可能成为一个问题。但是,如果您在注释字段中使用它,那么BBCode或SO本身使用的更合适。
你将无法使用WYSIWYG编辑器并执行HTMLEncode ...(没有BBCode或其他令牌系统)