1
很晚到游戏 -编码一个对象而不是每个属性
我刚刚开始思考我的网站上的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方法包装各个领域的地方去---有什么办法直接在参数上而不是在每个属性上直接转义字符?
感谢您的任何有用的提示。
更新:当内容类型:application/x-www-form-urlencoded; charset = UTF-8然后表单数据被自动编码。
我认为jQuery的实际执行此为您 – aw04
出于安全虽然,逃避所有这些字符的服务器 - 方,而不是客户端。在客户端上转义它使得XSS变得更加困难,但它仍然完全可能并且不那么困难。 – nicovank
@nicovank - 是的,非常好的一点。所有的端点也将得到保护。我只是把它作为一个额外的措施,因为我认为UI应该对XSS采取一些措施。 – fumeng