为了账号安全,请及时绑定邮箱和手机立即绑定

序列化数组是否会在传递到评估之前对输入进行清理?

序列化数组是否会在传递到评估之前对输入进行清理?

一只甜甜圈 2022-09-16 21:14:21
出于好奇,因为eval是“邪恶的”。序列化数组是否可以防止 xxs 攻击?根据我的理解,序列化Array()方法创建了一个对象的JavaScript数组,准备编码为JSON字符串。如果是这样,那么评估数据的更好方法是什么。var formdata = $('#form').serializeArray();$.post('https://www.example.com', formdata, function(data) {    if(data) {     var buffer = eval('(' + data + ')');     // do some logic to check for errors    } else {      // sumbit the form    }});
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

变量 formdata 将包含“#form”数据作为数组,并将发布到服务器(example.com)。

服务器将使用一些数据进行响应,现在轮到您对数据“执行一些逻辑”了。根据服务器的不同,响应将是字符串,json或其他数据格式。在这一点上,我感到困惑的是看到评估调用。

eval('(' + data + ')');

这不是您通常处理服务器数据的方式,问题是您是否信任服务器的数据来明确地评估它。

说这是一个更好的主意,只从服务器传递数据,并作为JSON接收它,然后遍历数据。

通常,库将处理JSON解析,您可以访问数据并对其进行迭代,就像在javascript中迭代对象/数组一样。由于您使用的是JQuery,因此我会阅读$.post的文档,并在浏览器开发工具中检查服务器响应。


查看完整回答
反对 回复 2022-09-16
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号