社区
C#
帖子详情
C# 防止用户输入IP地址加/image文件就直接可以下载到我的图片
Eda
2012-03-15 11:19:12
我这个是webservice的,放到IIS上,是这样的 例如:用户A在浏览器输入192.168.1.199/image/i.jpg 不能让他出现i.jpg的图片
必须是用我们这个软件后才能得到图片,单纯输入ip地址获取图片 不可以,当单纯输入IP地址/image这样的就直接给跳转到其他页面
...全文
293
14
打赏
收藏
C# 防止用户输入IP地址加/image文件就直接可以下载到我的图片
我这个是webservice的,放到IIS上,是这样的 例如:用户A在浏览器输入192.168.1.199/image/i.jpg 不能让他出现i.jpg的图片 必须是用我们这个软件后才能得到图片,单纯输入ip地址获取图片 不可以,当单纯输入IP地址/image这样的就直接给跳转到其他页面
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
吹风的兔子
2012-03-15
打赏
举报
回复
[Quote=引用 6 楼 qxyywy 的回复:]
没多大意思 能防止下载能防止截图??
[/Quote]
——防止 了下载,就防止了 爬虫的 恶意扒取;
——截图!总得人来做吧!
qxyywy
2012-03-15
打赏
举报
回复
没多大意思 能防止下载能防止截图??
greenberet007
2012-03-15
打赏
举报
回复
这个是我MVC项目里的一段代码,供你参考。
greenberet007
2012-03-15
打赏
举报
回复
Image img = Image.FromFile(imagefullpath);
string contenttype = "image/jpeg";
if (img.RawFormat == ImageFormat.Jpeg)
{
contenttype = "image/jpeg";
}
else if(img.RawFormat==ImageFormat.Gif)
{
contenttype = "image/gif";
}
else if (img.RawFormat == ImageFormat.Bmp)
{
contenttype = "image/bmp";
}
else if (img.RawFormat == ImageFormat.Png)
{
contenttype = "image/png";
}
else if (img.RawFormat == ImageFormat.Tiff)
{
contenttype = "image/tiff";
}
MemoryStream ms = new MemoryStream();
int maxWidth = 100;
int maxHeight = 100;
if (string.IsNullOrEmpty(Request.QueryString["height"]) == false && int.TryParse(Request.QueryString["height"], out maxHeight) == false)
{
maxHeight = 100;
}
if (string.IsNullOrEmpty(Request.QueryString["width"]) == false && int.TryParse(Request.QueryString["width"], out maxWidth) == false)
{
maxWidth = 100;
}
Size _newSize = ResizeImage(img.Width, img.Height, maxWidth, maxHeight);
if (_newSize.Width < maxWidth && _newSize.Height < maxHeight)
{
try
{
img.Save(ms, img.RawFormat);
Response.ClearContent();
Response.ContentType = contenttype;
Response.BinaryWrite(ms.ToArray());
Response.End();
return View();
}
finally
{
img.Dispose();
}
}
Graphics g = null;
Bitmap b = null;
try
{
b = new Bitmap(_newSize.Width, _newSize.Height);
g = Graphics.FromImage(b);
g.InterpolationMode = InterpolationMode.High;
g.SmoothingMode = SmoothingMode.HighQuality;
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
g.CompositingQuality = CompositingQuality.HighQuality;
//清除整个绘图面并以透明背景色填充
g.Clear(Color.White);
g.DrawImage(img, new Rectangle(0, 0, _newSize.Width, _newSize.Height), new Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel);
EncoderParameters parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ((long)95L));
b.Save(ms, img.RawFormat);
Response.ClearContent();
Response.ContentType = contenttype;
Response.BinaryWrite(ms.ToArray());
Response.End();
return View();
}
finally
{
b.Dispose();
g.Dispose();
img.Dispose();
}
jiuhexuan
2012-03-15
打赏
举报
回复
rewrite,httphandler,图片流输出
思路都是吧,这个后缀或者路径的,访问之前增加逻辑判断
Eda
2012-03-15
打赏
举报
回复
[Quote=引用 1 楼 sunzongbao2007 的回复:]
做一个专门的ImageDownload的Handler或者aspx页面,通过IO存取。
并且直接把所有的 */image/* 重定向到你需要的错误页或者提示页。
[/Quote]
您那有例子么?
铜臂阿铁木
2012-03-15
打赏
举报
回复
做一个专门的ImageDownload的Handler或者aspx页面,通过IO存取。
并且直接把所有的 */image/* 重定向到你需要的错误页或者提示页。
gzw13999
2012-03-15
打赏
举报
回复
直接访问图面 asp.net 无法控制啊。 除非图片扩展名映射给asp.net 处理。
建议使用 ISAPI_Rewrite
# 防盗链
# RewriteCond Host: (.+)
# RewriteCond Referer: (?!http://\1.*).*
# RewriteCond Referer: (?!http://(.*)(www\.你的URL\.com|\.你的URL\.com|\.baidu\.com|\.google\.com|\.google\.cn|\.g\.cn|\.gougou\.com|\.soso\.com|\.sogou\.com|\.youdao\.com|\.bing\.com|\.yahoo\.com|\.yahoo\.cn)).+
# RewriteRule .*\.(?:gif|jpg|png|jpeg|bmp|) /block.gif [I,O,N]
吹风的兔子
2012-03-15
打赏
举报
回复
[Quote=引用 9 楼 qxyywy 的回复:]
引用 7 楼 sxl514286339 的回复:
引用 6 楼 qxyywy 的回复:
没多大意思 能防止下载能防止截图??
——防止 了下载,就防止了 爬虫的 恶意扒取;
——截图!总得人来做吧!
对于爬虫 只做这个也不够,既然是防止爬虫爬数据总不会只防止爬图片吧 文本等数据难道你也如此??
若针对爬虫 还是做过滤器更好些,屏蔽恶意IP 个人愚见
[/Quote]
——文本还真防不了;恶意IP也防不了(我每访问20次,我就重新拨号一下);眼睁睁的看着别人爬....
porschev
2012-03-15
打赏
举报
回复
http://www.cnblogs.com/ghfsusan/archive/2011/02/25/1964579.html
Eda
2012-03-15
打赏
举报
回复
是这样的,是用户必须进我们这个软件才能看到 软件里的图,不能直接输入比如192.168.1.188/image/s.jpg这样获取图片,就是为了防止他输入/image/s.jpg这样 不知道如何防止
SmallAi_
2012-03-15
打赏
举报
回复
我只知道java中可以用顾虑器的 ,判断session中有没有 需要的值,然后进行跳转或者下载
qxyywy
2012-03-15
打赏
举报
回复
[Quote=引用 7 楼 sxl514286339 的回复:]
引用 6 楼 qxyywy 的回复:
没多大意思 能防止下载能防止截图??
——防止 了下载,就防止了 爬虫的 恶意扒取;
——截图!总得人来做吧!
[/Quote]
对于爬虫 只做这个也不够,既然是防止爬虫爬数据总不会只防止爬图片吧 文本等数据难道你也如此??
若针对爬虫 还是做过滤器更好些,屏蔽恶意IP 个人愚见
小case
2012-03-15
打赏
举报
回复
转数据流了,参考把图片转数据流存到数据库的做法,只是你把图片转成另一种文件。这样下下来也没多大作用
图片转数据流存到数据库
string fileName = openFileDialog1.FileName;
FileInfo fi = new FileInfo(fileName);
FileStream fs = fi.OpenRead();
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
数据库字段varbinary(MAX)= bytes;
读出来转文件(基本上什么格式都可以)
FileStream fs = new FileStream(@"d:\11.xls".ToString(), FileMode.CreateNew);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(((kuan1)bind.Current).picbin2.ToArray(), 0, ((kuan1)bind.Current).picbin2.Length);
bw.Close();
fs.Close();
string strFileName = @"d:\11.xls";
Object refmissing = System.Reflection.Missing.Value;
如果是图片文件直接显示
MemoryStream ms = new MemoryStream(数据库字段.ToArray());
pictureBox1.Image = Image.FromStream(ms);//
c#
网口 并口打印文字
图片
实例
例如,你可以创建一个Socket对象,连接到打印机的
IP地址
和端口号,再将打印命令转化为字节序列进行传输。 ```csharp using System.Net; using System.Net.Sockets; // 创建Socket实例 Socket socket = new Socket...
Visual.
C#
.编程精彩百例
实例50 获取网络主机
IP地址
实例51
C#
对话信息框的应用 实例52 在
C#
中快速调用Windows API 实例53 摄氏温度与华氏温度间相互转换(1) 实例54 摄氏温度与华氏温度间相互转换(2) 实例55 使用FileSystemWatcher...
C#
.NET TCP/IP
图片
文件
传输实战教程
NetworkStream是.NET Framework中用于网络通信的类,它
直接
承载在Socket之上,并提供了对数据流进行读写的方法。这个类是异步操作的基础,使得在网络上传输数据变得
直接
和高效。在TCP/IP通信中,NetworkStream负责...
C#
根据
图片
网址地址获取
文件
流
C#
根据
图片
网址地址获取
文件
流
C#
获取电脑
IP地址
大佬们,我通过以下方法读取电脑网卡的
IP地址
,但是当读取有线网卡的IP时,会读到两个IPV4地址,这个是怎么回事?求解。。。。。。。。。。 ![在这里插入
图片
描述]...
C#
111,126
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章