查看百度地图定位及图片上传安全的源代码
←
百度地图定位及图片上传安全
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
= <span dir="auto">百度地图定位</span> = 1,修复之前我们用的是myGeo.getPoint,这个方法回返回经纬度,但是由于我们生活在这个国度,你懂得,国家测量局要求“为了对个人隐私保护”不可以通过接口准确返回经纬度,要求二次加密。 <br/>2,百度内部其实开放了,解密算法BMap.Convertor.translate <br/>3,通过解密发现,解密后的经纬度还是差太多,定位跑偏 <br/>4,尝试另一种方法:智能搜索,即localsearch类,可以根据任意关键词查询到对应的POI信息。 智能搜索有三种方法,分别是:search、searchInBounds和searchNearby。利用此三种方法可以搜索到百度地图数据库中所有POI信息。 重点介绍 search方法: <br/><script type="text/javascript"> var myGeo = new BMap.Geocoder(); var map = new BMap.Map("mapDIV"); var marker; var options = {renderOptions: { map: map, panel: "results",//结果容器id //autoViewport: true, //自动结果标注 selectFirstResult: false //指定到第一个目标 //enableRouteSearchBox: true, //enableRouteInfo:false }, pageCapacity: 1 }; <span style="color:#0000FF"><span style="font-size: large">'''var myLocalsearch = new BMap.LocalSearch(map,options);'''</span></span> map.enableScrollWheelZoom(); $('#area_id').change(function(){ var province = $('#city_id').find("option:selected").text(); var select = $('#area_id').find("option:selected").text(); shangquan(); var adress = $('#address').val(); if(select==''){'' var select = '黄浦区'; } var select = province+select+adress; getMapPoint(select); }); function getMapPoint(select){ <span style="color:#FF0000"><span style="font-size: large">'''//这里用search方法的原因是以前的getPoint方法对地址解析定位不准确''' myLocalsearch.search(select); //搜索成功后的回调函数,对我们这次修复非常重要</span></span> <span style="color:#0000CD"><span style="font-size: large">'''myLocalsearch.setSearchCompleteCallback(function(results){''' if(myLocalsearch.getStatus() == BMAP_STATUS_SUCCESS){ var poi = results.getPoi(0); if(poi){ var pt2 = poi.point; setPoint(pt2.lng,pt2.lat);//取得准确的经纬度 }</span></span> }else{ myGeo.getPoint(select, function(point){ if (point) { //BMap.Convertor.translate(point,0,translateCallback); lng=point.lng; lat=point.lat; setPoint(lng,lat); }else{ getMapPoint('人民大道200号'); } }, "上海市"); } }); } <span style="color:#0000CD"><span style="font-size: large">'''function setPoint(lng,lat){'''</span></span> var point = new BMap.Point(lng, lat); var opts = {type: BMAP_NAVIGATION_CONTROL_LARGE} var marker; map.addControl(new BMap.NavigationControl(opts)); map.centerAndZoom(point, 16); myGeo.getLocation(new BMap.Point(lng, lat), function(result){ if (result){ address = result.address; } var infoWindow = new BMap.InfoWindow(" '''"+address+"'''<input type=\"button\" value='确认这个位置' onclick='confirmPosition(\""+address+"\","+lng+", "+lat+")'/> ", opts); marker.openInfoWindow(infoWindow); }); if(marker){ marker.setPosition(point); }else{ <span style="color:#0000CD"><span style="font-size: large">'''marker = new BMap.Marker(point);'''</span></span> <span style="color:#FF0000"><span style="font-size: large">'''//将标注置于其他标注之上。''' //默认情况下,纬度较低的标注会覆盖在纬度较高的标注之上,从而形成一种立体效果。通过此方法可使某个标注覆盖在其他所有标注之上。 //注意:如果在多个标注对象上调用此方法,则这些标注依旧按照纬度产生默认的覆盖效果。</span></span> <span style="font-size:large">'''<span style="color: rgb(0, 0, 205)">marker.setTop(true);</span>'''</span> map.addOverlay(marker); marker.enableDragging(true); } marker.setTitle("拖动此图标进行选择"); //var myGeo = new BMap.Geocoder(); marker.addEventListener("dragend", function(e){ var lng = e.point.lng; var lat = e.point.lat; var address = '';'' myGeo.getLocation(new BMap.Point(lng, lat), function(result){ if (result){ address = result.address;} var infoWindow = new BMap.InfoWindow(" '''"+address+"'''<input type=\"button\" value='确认这个位置' onclick='confirmPosition(\""+address+"\","+lng+", "+lat+")'/> ", opts);marker.openInfoWindow(infoWindow); }); }); marker.addEventListener('dragstart', function(e){ this.closeInfoWindow(); }); } function confirmPosition(address,lng, lat){ $(function(){ $("#lng").val(lng); $("#lat").val(lat); if(lng&&lat){ if($("#address").val()==''||$("#address").val()=='详细地址,如西藏中路268号来福士广场3楼301室'){'' $("#address").val(address); } alert("标记成功!"); return ; } }); } </script> === <span style="font: 18.0px Arial">记事狗相册图片上传安全</span> === 问题:记事狗相册插件图片上传安全漏洞,可以用抓包方式上传任何文件 <br/>原因: 1,没有验证上传的文件类型mime 2,没有验证上传的文件内容是不是图片 3,有有验证文件最后扩展名(后缀) 解决办法: 1,用如下方法得到文件mime类型: <br/>$finfo = finfo_open(FILEINFO_MIME); $mime = @finfo_file($finfo, $_FILES[$fieldname]['tmp_name']); finfo_close($finfo);$regexp = '/^([a-z\-]+\/[a-z0-9\-\.\+]+)(;\s.+)?$/'; preg_match($regexp, $mime, <span style="color:#0000CD">'''<span style="font-size: large">$matches</span>'''</span>); <span style="font-size:large">'''<span style="color: rgb(0, 0, 205)">$matches[1]就是miem类型:image/jpeg…</span>'''</span> <br/>2,用如下方法查看文件内容类型: $file_data = getimagesize($_FILES[$fieldname]['tmp_name']); <span style="font-size:large">'''<span style="color: rgb(0, 0, 205)">$file_data['mime']就是文件内容类型</span>'''</span> <br/>3,用如下方法查看文件后缀: $file = $_FILES['Filedata']; $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
返回
百度地图定位及图片上传安全
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
查看
阅读
查看源代码
查看历史
操作
搜索
导航
wiki首页
API文档说明
数据结构变更
技术开发文档
市场相关文档
产品相关文档
前端相关文档
测试相关文档
运维相关文档
编辑运营文档
入职帮助手册
周末值班安排
开发小组规范
数据查询文档
知识分享计划
wiki语法手册
客户端相关文档
工具箱
链入页面
相关更改
特殊页面
页面信息