我有一份登记表。我需要通过Ajax Post(mootools)将它发送到php文件。 发布表单的最佳和安全方式是什么?很多thx
答案 0 :(得分:2)
这可能是一个简短的主题或一个长话题,取决于你所说的'安全'是什么意思?你有什么顾虑?
看一下这个基本的例子: http://jsfiddle.net/dimitar/tr74c/
基本上,规则是不信任客户。永远。此示例在闭包(难以穿孔)中运行,通过输入并删除任何可能导致注入的脚本内容,如果稍后输出结果。然后它提交到服务器并输出回来以获得乐趣。
您不应该相信stripScripts()
在PHP中也有效,strip_tags
以及您mysql_real_escape_string
等用户应用于数据的其他安全措施等。
这在您的domready块中。
(function() {
var form = document.id("register"), els = form.getElements("input.required"), result = document.id("result");
form.addEvent("submit", function(e) {
e.stop();
var errors = false;
// clean inputs from cross site scripting and some basic validation, put yours in.
els.each(function(el) {
var value = el.get("value").stripScripts();
if (value.length < 3) // example min 3 length
errors = true;
el.set("value", value);
});
if (!errors) {
// set jsfiddle html.
document.id("html").set("value", "Submited safe data was: User: " + document.id("login").get("value") + ", pass: " + document.id("pass").get("value"));
new Request({
url: this.get("action"),
data: this,
onComplete: function() {
result.set("html", this.response.text);
}
}).send();
}
else {
alert("fill in all required fields with at least 3 chars");
}
});
})();
请记住HTML var是针对jsfiddle模拟的ajax输出而不是生产中真正需要的。