我在 FormData 中添加了一个 BLOB,例如,
const formData = new FormData();
formData.append('xyz', blob);
在上传这个 blob 时,下面是我见过的丑陋的有效载荷(这个丑陋的数据太长,无法在此处显示)。
Content-Disposition: form-data; name="xyz"; filename="xyz.png"
Content-Type: image/png
PNG
IHDRà5ÑÜä IDATx^\½i\i¥g¾/A23««» ÂHh©×ZÔ=ÐHúÿ¿@ôQ½Õ$cñݯð<ÇÞ %öp²2Ép¿÷]l9vìØì¿ÿoÿvº\¯õ°¨ût¯óý\÷ºÖz»ªé~©UÝk5j9¿×v³ªÏ_¾ÔùrÙ|UëÕ¶f³y]n׺MתùTóÅTÓt«ÛíR󥶫}}Ø.....
------WebKitFormBoundary1wDstGejHPb3PhBI
由于哪个服务器阻止此文件上传,并出现HTTP 403 Forbidden错误。由于使用AWS WAF在服务器端应用了一些规则。这些规则是 re:SQL 注入、XSS 等。
我认为,由于这个丑陋的有效负载,这些规则正在阻止请求,如果我附加基本文件对象(不是 BLOB),403 错误就不会出现!它与文件对象一起正常工作,此错误仅针对 BLOB 上传。
让我知道您的想法以及如何预防它!