游戏很晚 -
我刚刚开始在我的网站上考虑XSS。不幸的是,在几个地方我创建了通过Ajax传递的对象:
var params = {};
params.firstName = $("#firstName").val();
params.lastName = $("#lastName").val();
$.ajax({url:url, data:params}).done();
任何人都可以用可执行文件JS编写。现在,根据我的阅读,我可以通过这样做轻松解决这个问题:
var params = {};
params.firstName = encodeURIComponent($("#firstName").val());
params.lastName = encodeURIComponent($("#lastName").val());
$.ajax({url:url}, data:params).done();
但是我没有经过每个地方创建一个对象并在encodeURIComponent中包装每个字段---有没有办法直接在params而不是每个属性上转义字符?
感谢任何有用的提示。
更新:当Content-Type:application / x-www-form-urlencoded; charset = UTF-8然后表单数据自动编码。
答案 0 :(得分:-1)
这样的事情会起作用:
function encodeParams(data) {
Object.keys(data).forEach(function(key) {
data[key] = encodeURIComponent(data[key]);
});
return data;
}
您可以这样使用:
var params = encodeParams({
firstName: $('firstName').val(),
lastName: $('lastName').val()
});
ajax(...)