当我尝试把它放在像这样的文本框中时,我遇到了一个错误,
tbGameTitle.Text = "<iframe id = 'ForIframe' src='http://e.gamesalad.com/play/117208' allowTransparency='true' scrolling='no'></iframe>";
点击我的按钮
myThing.InnerHtml = tbGameTitle.Text;
它会抛出此错误
A potentially dangerous Request.Form value was detected from the client (tbGameTitle="<iframe id = 'ForIfr...").
如果我在pageload事件上有这个负载,那么它很好。但是只要我在文本框中输入并单击我的按钮,它就会抛出该错误。我让它从另一个项目开始工作,它从来没有抛出这个错误。
答案 0 :(得分:0)
ASP.Net表单内容在提交时会检查危险内容(HTML和javascript之类的内容被标记为具有潜在危险并被拒绝)。有几种方法可以提交这些内容,在将文本发送到服务器之前对文本进行HTML编码,或者使用页面顶部的标记禁用请求验证(可能不安全!):
<@ Page validateRequest="false" %>
有关请求验证的更多信息,请访问this link
答案 1 :(得分:-1)
你需要转义像“&lt;”这样的字符。 阅读一下:XSS
此post必须有所帮助。
您希望从该页面获取的主要代码是:
// The event to escape the data and store in our HiddenField
jQuery('.allow_html textarea').blur(function () {
jQuery(jQuery(this).parent()).find('input[type="hidden"]').val(escape(jQuery(this).val()));
});
// The code to unescape the code and set it in our textbox
jQuery('.allow_html textarea').each(function(idx, item) {
var value = jQuery(jQuery(item).parent()).find('input[type="hidden"]').val();
jQuery(item).val(unescape(value));
});
将转义输入中的HTML代码。
并且,在服务器端,您需要取消它:
// encode the data
HtmlCodeHiddenField.Value = Uri.EscapeDataString(EscapedHtml);
// decode the data
string myHtml = Uri.UnescapeDataString(HtmlCodeHiddenField.Value);