php 判断接口请求来源这张图片的来源 或者是这张图片同个角色的其他图片

HTTP请求一张图片,转为流返回
实现用HTTP连接获取一张图片,在servlet中转为流之后输出,这样访问一个service之后就能直接得到图片流并显示出来
类似于访问一个图片的src(html)中会向一个http://localhost:8080/webproj/i.jpg发送请求,于是浏览器就会显示这张图片出来,现在要实现一个后台的service,做的是同样的事情但是请求的却是service,而这个service就返回了图片流回来
* 获取图片
* @param request
* @param response
public void GetImage(HttpServletRequest request
, HttpServletResponse response){
URL url = new URL("http://csdnimg.cn/www/images/csdnindex_logo.gif");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5 * 1000);
InputStream inStream = conn.getInputStream();//通过输入流获取图片数据
byte data[] = readInputStream(inStream);
inStream.read(data);
inStream.close();
response.setContentType("image/jpg"); //设置返回的文件类型
OutputStream os = response.getOutputStream();
os.write(data);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
public static byte[] readInputStream(InputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[2048];
int len = 0;
while( (len=inStream.read(buffer)) != -1 ){
outStream.write(buffer, 0, len);
inStream.close();
return outStream.toByteArray();
* 上传首页图片
* @param request
* @param response
public void UploadHomeImage(HttpServletRequest request
, HttpServletResponse response){
//存储文件,同时获取表单中的输入值对
Map&String, String& nameValuePair = new HashMap&String, String&();
//户型图片存储对象
HomeImage homeImage = new HomeImage();
//获取存储的地址,同时捕获参数值对
String imageUrl = saveUploadFile(request,
"/Upload/HomeImage/", nameValuePair);
homeImage.setImageUrl(imageUrl);
homeImage.setUploadDate(new Date());
settingService.saveOrUpdateHomeImage(homeImage);
//获取信息界面显示类
HomeImagePage responsePage = settingService.getWebHomePage();
//将页面显示数据类转化为JSON,返回前端
responseOutWithJson(response, responsePage);
response.setStatus(HttpServletResponse.SC_OK);
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!html/css教程:背景图片的定位问题详解_CSS教程_动态网站制作指南
html/css教程:背景图片的定位问题详解
来源:人气:6729
我们在研究其他的网站的样式的时候经常会发现一种情况,就是在很多background属性里都调用同一张图片,来满足网页各个部分的使用。打开这种图片看一下,会发现这张图片上包含了很多小图片,比如:
这些小图片就是整图分割后的各个部分,把各个部分放在一张图片上,而不是是分别存储成单独的图片,其目的我们都知道,就是减少http请求次数,节省时间和带宽。
那么怎么来实现一张图片在不同的地方只显示其中的一部分呢,这就用到了我们今天要说的图片的定位问题。这个问题相信很多人都郁闷过,也经常有朋友问我,所以今天就系统的说一下:
我们知道在用图片作为背景的时候,要这样写,以div容器举例子,也可以是body、td、p等的背景,道理一样。
div{ background:#FFF url(image) no-}
这里的background的属性值依次为:
#FFF 背景色:(颜色值,背景图片没有覆盖的地方,或者没有背景图片时表现的背景色)image 背景图片:(这里是图片的地址)no-repeat 是否重复:(图片小于容器的大小时,默认会重复排列图片以填满容器,no-repeat表示不重复,只有这个时候后面的定位坐标才有用。)fixed 背景是否随容器滚动:(有两个可选值,scroll滚动,fixed不滚动,默认是scroll)x y 背景图像的定位:(注意,只有在no-repeat下定位才有意义。这个就是今天要讲的重点)
背景图像定位中我们要明确的几点:
1、两个值前面一个是横向的定位,我们称为x轴方向定位。后面一个值是纵向的定位,我们称为y轴方向定位。如果只有一个值,那默认的就是x轴方向,这时y轴方向就默认的是上下居中对齐,也就是center。2、坐标轴的原点就是对应容器的左顶点。3、这个坐标的y轴箭头朝下,也就是右下方(容器内部)x y的值才都为正。4、x y值分别表示背景图片的左顶点相对于坐标原点(也就是容器的左顶点)的值。5、x y的值可以用百分比或者px来表示。6、x y也可以用“left、right、top、bottom、center”这五个对齐方式来表示,但注意:用“left、right、top、bottom、center”来表示的时候,应用的是对齐规则,而不是坐标规则。x为left是表示图片的左边和容器的左边对齐,为right的时候表示图片的右边和容器的右边对其,y为top的时候表示图片的顶部和容器的顶部对齐,为bottom时表示图片的底部和容器的底部对齐,x y等于center的时候表示居中对齐。7、x y用百分比或者px表示的时候,其值可以为负数。我们应用坐标规则就很容易理解负数表示的意义,x为负数时候表示图片左顶点在容器左顶点的左侧,y为负数时表示图片的左顶点在容器的左定点的上方。也就是向左和向上超出容器的范围。
下面我用几个图示来说明一下几种情况,蓝色块表示图片,虚线框表示容器(可以div,td,或者直接就是body),注意只有背景图片在容器内我们才能看见,我用白色表示可见部分,而且超出容器范围的是看不见的,我用灰色表示。容器的左定点的坐标就是(0,0)。
第一张,背景图片和容的左上对齐,0px 0px 也可以写成left top
第二张,背景图在容器中间,定点坐标为正值
第三张,背景图部分在容器左上,定点坐标为负值
--------------------------------------------------------------------------- 到此我们可能就明白了如何用background里的定位值来准确定位一个背景图片,返回去我们看一下开始的时候介绍的两个图片,我们就是可以用:背景定位和容器内才可见这两个性质来随意的调用整张图片的某一部分。
但是我们为了调用方便,在排列这些小图片的时候要讲究一点规则,比如:小图之间的距离通常是调用小图的容器的大小,或者距离更大一点,这样就可以避免在容器内显示出我们不愿意显示的图片!
补充一点,如果定位用的是百分比话,算法比较特殊。我举个例子:
background:#FFF url(image) no-repeat fixed 50% -30%;
这个时候图片应该在容器的什么位置呢,算法公式如下:
图片左顶点距容器左顶点的坐标位置为 x:(容器的宽度-图片的宽度)x50% y:(容器的高度-图片的高度)x(-30%) 得到的结果应用坐标法则,差值如果为负数,百分比为正那么运算结果是负值。如果差值为负数,百分比也为负数,那么运算结果就是正数。总而言之就是这里的运算符合运算法则。把运算的结果带入坐标法则就能得到图片的位置。 比如:容器是width:600px;height:600px;而图片是width:200px;height:200px; 我们用上面的样式,可以得到图片位置为: x:(600px-200px)*50% y:(600px-200px)*(-30%) 如下图:
优质网站模板请求这两张图片原来的图片,是合起来的,谢谢!_百度知道
请求这两张图片原来的图片,是合起来的,谢谢!
我有更好的答案
按下面步骤进行:一、在Photoshop中打开要合并的图片;然后根据合成后需要的大小新建一个图片。二、如果是GIF图片需要将图片的索引模式转换为RGB色彩模式,才能进行。菜单:图像/模式/RGB颜色。然后分别双击图层面板中背景图层,在出现的新图层面板中确定,去掉对图层的锁定。三、分别对要合并的图像按下鼠标左键,将其拖动到新建的图层中,调整其位置、大小。使用菜单:编辑/变换/缩放。四、对合并图片进行交界处的修饰,这要看图片的实际情况选择不同的工具进行。给你的样式图片是用画笔选择右边图片的背景色进行涂抹的,所以看起来没有明显的接缝。其实,关键就在这里,弄得不好就是一眼看出是两幅图合成的。常用的工具有仿制图章工具、画笔工具等,也可以使用快速蒙版来进行,如果要将其中一幅图片安放到另一张图片中,使用其背景,也可以使用魔棒、套索等工具将部分图形一般是人物勾勒后拖到新的使用背景的图中,也可以使用抽出、液化等工具,这要看实际情况而定。五、合成后,可以保存为自己需要的图形格式;为了以后便于修改,还应该保存一个PSD文件,以后打开这个PSD文件,可以看到你合并的图层依然存在,可以直接进行进一步的编辑。样图就是当前页面上的两幅图合并而成的。
我的意思是你帮我找一下那张合起来的图片,而不是你教我方法。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。怎么找到一张图片的来源?_百度知道
怎么找到一张图片的来源?
我有更好的答案
:你想凭着一张现有图片找出它的原始图片,或者是凭着一张小的缩略图找出原始大图吗?下面的十款搜索引擎可以帮你实现,以图找图,以图搜图,以图片搜索相似的图片。一: Tineye是典型的以图找图搜索引擎,输入本地硬盘上的图片或者输入图片网址,即可自动帮你搜索相似图片,搜索准确度相对来说还比较令人满意。TinEye是加拿大Idée公司研发的相似图片搜索引擎,用户可以提交或上传一个图片TinEye找出它来自何处,它是如何被使用,如果更改的图像版本存在,或寻找更高分辨率的版本。TinEye是第一个在网络上的图像搜索引擎使用图像识别技术,而不是关键字,是其他数据。图片上传到TinEye不会添加到搜索索引,也不是由其他用户访问。非注册用户提交的搜索图片72小时后将被自动丢弃。链接到这些搜索将在72小时后停止工作,除非出现一个注册用户保存相同的图像。注册用户提交搜索图像的保存,如搜索历史,是在他们的用户配置文件中启用。保存的搜索,可从历史网页,永久保存的搜索任何URL链接可设置为书签,或与朋友共享。TinEye主要用途:1、发现图片的来源与相关信息;2、研究追踪图片信息在互联网的传播;3、找到高分辨率版本的图片;4、找到有你照片的网页;5、看看这张图片有哪些不同版本。允许上传的图片文件类型:JPEG,PNG和GIF,图片文件大小限制:1兆字节的最大文件大小。二: GazoPa搜索图片时,不依据关键词进行检索,而是通过图片自身的某些特征(例如色彩,形状等信 息)来进行搜索。GazoPa搜索方式有三种:第一种是传统的通过关键词搜索图片,但在传统图片搜索领域GazoPa与google等搜索引擎无法竞争。第二种是创新的通过图片搜索图片,但在此领域GazoPa无法与TinEye相竞争。TinEye很容易就能搜索出与原图最接近的一些结果,而GazoPa很多时候的搜索结果则完全无法与原图匹配。第三种是通过手绘图片搜索图片,这种方式其实没太大用处。GazoPa虽然有这样那样的不足之处,但也算是一个很有独创性的搜索引擎。GazoPa目前还处在内测阶段,想要加入测试的可以在官网上留下你的邮箱地址,收到邀请后你就可以测试使用了。第四种是通过视频缩略图搜索视频,GazoPa仅凭一张视频缩略图就可找到相关视频。只要有截图,就可以找到截图的视频!三、 Google实验室类似图片搜索:输入一个关键词后,例如“lake”,返回的页面里面点击某个图片的下面的Similar images,运用Google 类似图片搜索功能引擎,即刻为你把类似的图片全部搜索出来,展示给用户以便查看。其准确率、相似率相对比较高。四、 Picitup是一个刚开始公测的专业图片搜索引擎,功能非常强大,并支持中文关键字的搜索,是国内图片爱好者的不错选择。Picitup主要支持关键字的搜索,但在它的特色搜索项目——名人匹配搜索(Celebritymatchup)中,你可以通过上传本地照片来进行搜索,不过结果一般让人失望。Picitup可以通过在搜索结果页选择过滤方式来筛选图片,比如可以按颜色、头像(人脸)、风景、产品四种类别来过滤搜索结果。Picitup最大特点是提供相似图片搜索,即通过关键字找到初始图片,点击初始图片下面的similar pictures按钮,即可搜索与该张图片类似的图片。其实质和Google实验室类似图片搜索是一样的。五、 Tiltomo是由 Flickr 开发的一个搜索工具,主要用来维护Flickr 自己的图片数据库, 其搜索算法主要是基于相似的主题风格或相似的色调和材质。六、 Byo image search是根据你上传的图片来搜索相似的图片,算法主要是基于色彩,也包括主题风格。七、 Live.com允许你进行一次关键字搜索后再执行相似性的搜索。你可以为Live索引中的任意一张图片寻找相似的图片,但搜索结果看起来并不是很精确。八、 Xcavator 和Live.com很相似,你需要先输入一个关键字,然后在搜索结果中挑选一张图片,在根据这张图片的特点来进行搜索。九、 Incogna的搜索速度非常快,主要是基于色彩和形状上的相似性。十、 Terragalleria主要基于视觉上的相似性,而不考虑图片的内容。
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。点击一张图片背后的风险 - FreeBuf互联网安全新媒体平台 | 关注黑客与极客
点击一张图片背后的风险
共735621人围观
,发现 39 个不明物体
* 本文原创作者:mscb,本文属FreeBuf原创奖励计划,未经许可禁止转载
你相信吗?仅仅是因为你点击了某个你一只在访问网站里的一张图片,导致你的用户名、密码泄漏,甚至电脑被植入病毒。这一切可不仅仅是危言耸听。
利用的方法来源于一个算不上漏洞的漏洞 。Freebuf 曾经也报道过(),但这个“漏洞”至今还是可以利用。这篇文章,让我们实际运用一下这个漏洞,来实现钓鱼。
我们先来看看这一攻击是如何实现的,主要的原因是带有target=”_blank”属性的标签,如下面的代码
&a target="_blank" href="http://XX.XX "& HELLO&/a&
看起来没什么问题,实际上,如果用户打开该网站,而该网站又正好有一段这样的代码
if(window.opener){
window.opener.location
= "http://google.com ";
那当你打开,并且载入后,原来的网站将会自动跳转到Google。
众所周知,目前很多网站,包括一些个人博客。都有提供评论,或者留言的功能,有一些还支持调用外部图片在本站显示。我们正好可以利用这一点来实现我们所希望的功能。
首先,我们要准备一张图片,这里用一段代码的图片来演示,但为了提高钓鱼的成功率,我们要做一点小修改,比如修改下它的大小。
看起来非常模糊,很多时候都会忍不住,点击打开查看。毕竟,“点击查看大图”这一功能已经深入人心了!评论区显示图片的代码如以下的样子。
在评论区里看到的图片应该是下面这个样子
但当你忍不住打开图片的时候,就会发生神奇的事情
当你打开后,确实能看到原来那张图片的放大版。但与此同时,原来那个网页却正在悄悄的改变……
这里为了更加直观,我们使用Google来演示。在实际运用中,也许我们可以转到一个与原来网站一模一样的页面,提示用户登陆,我们甚至可以完全模拟该网站,仅仅把网站的内的下载链接篡改成自己的病毒软件。
要实现这样的一个钓鱼图片,我们首先需要一个网络空间,这里使用php来完成这一切(世界上最好的语言,哼!)
这里的逻辑主要是判断页面请求。这些请求信息都在$_SERVER系统变量里面,所以我们首先需要找到不同方式下请求头会有什么不同。我们可以通过这一小段函数来收集一些信息,这里的意思是把$_SERVER内的内容保存至log.txt内。
file_put_contents("log.txt",print_r($_SERVER,true),FILE_APPEND);
通过对输出的log.txt进行对比,发现其中一个请求头有可以利用的地方
[HTTP_ACCEPT] =& image/webp,image/*,*/*;q=0.8
[HTTP_ACCEPT] =& text/html,application/xhtml+xml,application/q=0.9,image/webp,*/*;q=0.8
通过img标签访问的是第一个,而直接通过浏览器访问的是第二个。由此可以想到通过$_SERVER[‘HTTP_ACCEPT’]来判断是否是浏览器访问。
接下来,只需要几行简单的代码,就能把这个功能写出来
第一步,判断$_SERVER[‘HTTP_ACCEPT’]前5个字符,是否为image,如果是,则跳转到freebuf-test-l.png这个图片,如果不是则说明是通过浏览器访问,那就执行我们之前说的JS代码。
好啦!用几行简单的代码,一个钓鱼图片就建立起来了。我们接下来要优化一下URL。毕竟你外链一个XX.XX/index.php 肯定会引起别人怀疑。一般来讲我们可以用一下伪静态来实现访问/XX.jpg但实际上却是访问/XX.php的功能。但是我这里是用一个免费空间来测试,而这个空间并不支持伪静态。那不如让我们转个弯——用文件夹来实行“伪静态”。
在程序目录建立一个/t.jpg 的目录
新建一个index.php 文件
OK!现在就能用XX.XX/t.jpg 来访问。
接下来我们要在跳转的网页上做文章了。既然要实现钓鱼的功能,那最重要的就是不能让用户发现这个网站有问题,否则怎么会乖乖的把他的用户名和密码输入进去了?同时,还要考虑到一个问题,我们来利用这个进行钓鱼并不是只针对个别的网站,对不同的网站都要适用。对此一般有以下几种思路:
1.将要跳转之前的URL通过GET传输到服务端,通过服务端对源网页进行拉取、渲染。
这样的好处有很多,比如你可以控制输出的EMAIL内容、支付信息、甚至直接替换显示的资源,给用户返回一个替换过的exe文件、pdf文档等等。缺点也不能忽视,明显能感觉到的是,速显变慢了(从目标服务器拉取到你的服务器,再从你的服务器传给客户端),尤其是2台服务器处在不同的国家。
2.同样是通过get传递url信息,但不同的是直接用HTML的iframe 。
首先用php构建html页面,在HTML里用iframe 把网页地址嵌入。然后弹窗提示用户登陆……是不是看起来很眼熟?没错就是运营商搞的那一套。这样也有好处和坏处,好处是实现简单,速度较快。坏处是控制能力不强。而且你对iframe里的内容也无可奈何,只能眼睁睁的盼望着用户乖乖的输入密码登陆。
如何避免该漏洞
对于该漏洞,网络上的报道很多,基本也都给了修复方式,我在此也不必多说,只提供几点小建议。
对网站:对每一个需要使用target=”_blank”的链接都加上 rel=”noopener noreferrer” 这个属性。同时要关注用户上传的图片,或许你应该像关注xss一样关注一下外链图片的问题。
对用户:小心!小心!再小心!关注一下你点开的链接。使用右键-&在新标签中打开链接 来打开新的连接!
这篇文章并不是技术文,涉及到的技术点也很少,主要在于分享一个我自己的小思路,如果有说的不对的地方还请见谅。
对于上面的一点,也许有人会有疑问。就是为什么不用HTTP_REFERER来判断来源地址,其实我最开始也是使用这个,但由于浏览器的一些安全策略,在一些浏览器(列如我的CHROME下)该值为空,也就是说浏览器不会发送该头信息。
这个漏洞,每个网站管理员都应该给予重视。就拿该图片钓鱼来讲,攻击者完全可以在各大WP博客等网站批量的尝试,可控性、隐蔽程度都非常高。并且,这个漏洞甚至可以运用来做显示广告赚取佣金,不仅能批量发,还能避免被发现。
BTW,貌似freebuf后台的投稿界面里好像也可以添加外链图片 (逃
* 本文原创作者:mscb,本文属FreeBuf原创奖励计划,未经许可禁止转载
窃.格瓦拉驻FreeBuf办事处
楼主要表达的意思是撸多了眼睛会花
你点开google给我看一下算你牛逼,不FQ
必须您当前尚未登录。
必须(保密)
这家伙太懒,还未填写个人描述!
关注我们 分享每日精选文章
可以给我们打个分吗?

我要回帖

更多关于 110 请求来源未被授权 的文章

 

随机推荐