我正在使用 FtpWebRequest 将文件上传到服务器。但它会导致严重的跨站点脚本(XSS)漏洞。该文件内容是导入的,我需要按原样上传。我该如何解决这个问题?
该方法在第 1274 行将未经验证的数据发送到 Web 浏览器,这可以 导致浏览器执行恶意代码。
StringBuilder sb = new StringBuilder();
sb.AppendLine(...);
.
.
.
byte[] data = Encoding.Default.GetBytes(sb.ToString());
FtpWebRequest requestUpload = (FtpWebRequest)WebRequest.Create(ftpPath);
requestUpload.Proxy = new WebProxy();
requestUpload.KeepAlive = false;
requestUpload.EnableSsl = true;
System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true;
requestUpload.Credentials = new NetworkCredential(ftpUser, ftpPassword);
requestUpload.Method = WebRequestMethods.Ftp.UploadFile;
using (Stream requestStream = requestUpload.GetRequestStream())
{
requestStream.Write(data, 0, data.Length);
}
FtpWebResponse response = (FtpWebResponse)requestUpload.GetResponse();
您需要验证您的文件并对其施加适当的限制。两个最合适的限制是尺寸和类型。
您应该将大小限制为适合您的场景,即您需要上传的最大文件大小。
您应该将文件类型限制为不包含可执行文件的类型,例如CSV、PDF。
您可以使用自定义验证属性来处理验证。
该代码行不会向网络浏览器发送任何数据。
对我来说,这似乎是一个错误的警告。