我有一个发送到URL的表单,该服务器将fieids存储在数据库中并发送电子邮件消息,然后将成功页面发回到浏览器。该表单适用于Firefox,但在IE8中保存数据,发送电子邮件,但成功页面被阻止。如何禁用XSS筛选器或重写我的表单以避免此问题。我不明白为什么它被阻止但是如果我注释掉它工作的表单的用户信息部分。
我是Javascript和HTML的新手,我不了解我读到的有关XSS过滤器的大部分内容。我使用了这段代码,所以我不知道编写这些表单的正确方法。
实际上有两种形式用javascript生成并提交给服务器。在下面的代码中提交的第一个表单具有XSS问题,第二个表单非常相似,完美地起作用。
function doSubmit()
{
if (!validateForm())
return false;
if (confirmForm())
{
generateForm_code(); //builds first form
clearUndefinedFieldsInForm("form_generated_code");
document.form_generated_code.target="frame_code";
document.form_generated_code.method="post";
document.form_generated_code.action= "http://their.server.com/servlet/UFO?001=1";
document.form_generated_code.submit();
generateForm(); //builds second form
clearUndefinedFieldsInForm("form_generated");
document.form_generated.target="frame_generated";
document.form_generated.method="post";
document.form_generated.action = "http://their.server.com/servlet/UFO?002=1";
document.form_generated.submit();
}
}
his.server.com发回回复
<body>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=UTF-8">
</head>
<html>
<script language="javascript">
location.replace("http://my.server.com/successback.html");
</script>
</html>
</body>
我的successback.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>SUCCESS BACK</title>
</head>
<body>
<script>
parent.successbackHandler();
</script>
</body>
</html>
此部分计算返回的表单,并在收到两个回复后发送真正的成功消息。但由于它只收到一个回复,它永远不会显示真正完成的页面。
totalPostPages= 2
function successbackHandler()
{
totalPostPages --;
if(totalPostPages == 0)
{
MaskDialog.hide();
totalPostPages= 2
window.location="reallyfinished.html";
}
}