我在我的asp.net mvc表单中使用了富文本编辑器(带有textarea的nicedit),当我在post上提交表单时,因为它不是html编码,我收到以下消息:“一个有潜在危险的Request.Form值从客户端检测到“。 我如何在post上对textarea进行html编码? 我不想取消validation。 有没有办法在提交时使用html.encode助手?
谢谢。
您可以使用ValidateInputAttribute修饰处理表单post的操作:
[ValidateInput(false)] [HttpPost] public ActionResult SomeActionToHandleFormSubmission() { ... }
而不是关闭ValidateInput
,因为你对漏洞开放,你可以使用Javascript来编码特殊的字符。 这允许您不抛出错误消息:
从客户端检测到潜在危险的Request.Form值
对于一些简单的输入(例如MyName
格式的电子邮件),但仍然具有内置的MVCfunction,可以观察您的其他脚本注入。 当然,如果您需要在服务器上以正确的格式输入,则必须对其进行解码,如果再次输出则要小心
如果已经使用了jQuery,可以很容易地将其添加到所有输入字段,如下所示
$("input").on("change", function() { $(this).val(htmlEscape($(this).val())); });
这里的htmlEscape
是我自己改变特殊字符的function。
function htmlEscape(str) { return str .replace(//g, '>'); }
根据您的需要,您可能希望使用内置的Javascript函数encodeURI
来转义所有字符,或者扩展上述函数,例如:
function htmlEscape(str) { return str .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(//g, '>'); }
使用AllowHtml装饰字段将完成工作而不会忽略validation逻辑。 这解决了我的情况下没有编码/解码的问题。
[System.Web.Mvc.AllowHtml] public string YourField { get; set; }
你在使用.net 4.0吗? 如果是这样,你也需要
' '
在您的config.web文件中。
需要了解更多jQuery教程分享asp.net mvc编码在表单上,都可以关注jQuery技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是jQuery教程分享asp.net mvc编码在表单上相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/jquerytutorial/981931.html