只是为了让人们知道,我确实按照一些人的建议稍微编辑了这个帖子,这个问题已经发布在Azure CDN论坛上了.我在StackOverflow上发布它的原因是尝试吸引更多的受众,希望处理相同/类似问题的人可以提供有价值的解决方案/反馈.据我所知,目前还没有解决这个问题的办法,但这会影响任何使用CDN传递内容的企业.我愿意进一步编辑这个问题,但我要问的是,人们不会简单地对这个问题进行投票,因为这听起来像是一个"咆哮",它不是,我可以向你保证它会影响成千上万的企业无论他们是否意识到这一点,每年都要花费数千美元.
所以情况就是这样.假设我正在建立一个图片库网站,我想使用Azure CDN为我提供我的内容.在后端,Azure CDN将从Azure存储帐户中提取内容.CDN速度快,功能强大,但看起来虽然在防止有人能够大量提取内容并因此给用户留下巨大的带宽费用方面有点不安全.让我展示一下我的意思.
因此,昨晚我决定编写一个简单的控制台应用程序,将我的未来的简单图像下载到图片库网站,在for {}循环中,代码如下:
namespace RefererSpoofer
{
class Program
{
static void Main(string[] args)
{
HttpWebRequest myHttpWebRequest = null;
HttpWebResponse myHttpWebResponse = null;
for (int x = 0; x < 1000; x++)
{
string myUri = "http://myazurecdnendpoint.azureedge.net/mystoragecontainer/DSC00580_1536x1152.jpg";
myHttpWebRequest = (HttpWebRequest) WebRequest.Create(myUri);
myHttpWebRequest.Referer = "www.mywebsite.com";
myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
Stream response = myHttpWebResponse.GetResponseStream();
StreamReader streamReader = new StreamReader(response);
Image image = Image.FromStream(streamReader.BaseStream);
image.Save(string.Format("D:\\Downloads\\image{0}.Jpeg", x), ImageFormat.Jpeg);
myHttpWebResponse.Close();
}
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
此控制台应用程序对我的Azure CDN端点上托管的映像文件发出1000个超快速连续请求,并将它们保存到我的PC上的"D:\ Downloads"文件夹中,每个文件名对应于for {}循环迭代,即image1.jpeg,image2.jpeg等
刚刚发生了什么?在大约1分钟的时间里,我花了140MB的带宽.这是一款高级CDN,价格为0.17美元/ …