gpt4 book ai didi

c# - 使用 Server.Transfer() 将请求传输到静态图像(.jpg、.png 等)是否安全?

转载 作者:行者123 更新时间:2023-11-30 22:41:09 25 4
gpt4 key购买 nike

我有一个实现 IHttpHandler 的类,该类旨在处理图像调整大小请求。它像这样处理 Urls

http://mysite.com/imageHandler?image=myimg.jpg&width=100&height=100

当前处理程序在磁盘上查找 myimg.jpg,剪切一个 100x100 的缩略图(如果它不存在)并将客户端重定向到缩略图,就像这样

Response.RedirectPermanent("/some/virtualPath/to/thumbnail.jpg");

这一直运行良好,但我想避免强制客户端发出第二个 HTTP 请求。执行以下操作是否安全?

Server.Transfer("/some/virtualPath/to/thumbnail.jpg")

所有 MSDN documentation谈到使用 Server.Transfer() 重定向到 aspx 页面,所以我不确定这样做是否正确。

谢谢,

最佳答案

嗯,MSDN page明确地说:

The page transferred to should be another .aspx page. For instance, a transfer to an .asp or .asmx page is not valid.

因此,即使它可能 有效,但就您可以依赖此功能而言,它并不“安全”。你违反了contract通过使用非 aspx 页面,因此从理论上讲,该方法可以任意运行。

针对您的问题,一个安全的解决方案是使用 Response 对象的适当方法将缩略图发送到客户端,例如 BinaryWrite(如果缩略图位于内存)或 TransmitFile(如果图像在磁盘上)。在这种情况下,不要忘记适本地设置 HTTP header (Response.ContentType = "image/jpeg") 以通知客户端这是一个 jpg 图像。这种方法的另一个优点是您的缩略图文件不需要驻留在您的网络服务器的可公开访问的目录中。

关于c# - 使用 Server.Transfer() 将请求传输到静态图像(.jpg、.png 等)是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com