我在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在服务器端应用了一些规则。这些规则是:SQL注入,XSS等。
我认为,这些规则阻止了请求,因为这个丑陋的有效负载,如果我追加基本文件对象(不是BLOB),403错误就不会到来! 它与文件对象一起正常工作,此错误仅适用于BLOB上传。
让我知道你的想法以及如何预防它!