我为用户创建了一个文本框来输入他们的评论。因此,有时他们会复制应用程序中引发的错误并粘贴到文本框中以及注释。它可能包含非法字符(例如</11>
)但应该保存但我的.aspx不允许。我不知道如何处理这个问题。谢谢!
答案 0 :(得分:3)
我假设您正在谈论一条异常消息,例如“从客户端检测到有潜在危险的Request.Form值...”
这是运行中的asp.net请求验证。这可以在页面或站点级别禁用,但这样做存在风险。
在页面指令或web.config中使用ValidateRequest =“false”完成。
此处提供更多信息: http://www.asp.net/learn/whitepapers/request-validation
答案 1 :(得分:2)
如果您希望用户编辑TextBox并输入html标记,您可以通过
禁用此功能 <%@ Page validateRequest="false" ...>
或整个应用程序的web.config:
<system.web>
<page validateRequest="false" />
</system.web>
请注意,此ValidateRequest属性不存在 原因。当您更改其默认值时,将出现不安全的输入 公认。因此,您需要验证每个用户的输入 避免跨站点脚本攻击,如插入恶意攻击 JavaScript,ActiveX,Flash或HTML
另一个智能解决方案是通过用户编写的javascript文本替换,以确保安全。
< anyword>
代替<anyword>
被认为是安全的!
function validateTxt() {
$("textarea, input[type='text']").change(function () {
html = $(this).val(); //get the value
//.replace("a" , "b") works only on first occurrence of "a"
html = html.replace(/< /g, "<"); //before: if there's space after < remove
html = html.replace(/</g, "< "); // add space after <
$(this).val(html); //set new value
});
}
$(document).ready(function () {
validateTxt();
});
答案 2 :(得分:0)
您可以尝试在传输之前对Base64中的内容进行编码。但我不确定我的解决方案是否真的很好。
http://nolovelust.com/post/classic-asp-base64-encoder-decoder.aspx
答案 3 :(得分:0)
这可能是由于HTML被拒绝服务器端,作为安全预防措施。
您可以通过以下方式禁用此检查:
将以下属性添加到页眉<%@ Page validateRequest="false" %>
或在 Web.Config :
中更改应用程序<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>