ip位置本来就不准确,人为更改ip地址也很容易实现,防更改意义不大

解决方案 »

  1.   

    现在需要获取客户端的经纬度,这个在html5浏览器是可以用js实现的
    我的做法是通过js获取到经纬度,然后保存在hidden,最后传入服务端保存现在的问题是,如何防止这个经纬度被恶意修改。再次强调,现在想求教的是如何防止js获取的经纬度(hidden值)被改,而不讨论这个经纬度是否准确,或者这个经纬度在获取之前就已经被恶意模拟或修改的情况。之前发帖请教,一些回复提到用密匙、MD5,这个原理我也懂,就是把数据和密匙组合,再MD5,再和明文数据一起传到服务端进行对比。但是现在的情况是原始数据是客户端生成的,如果要进行加密,始终有一个将客户端数据传入服务端的过程。如果这个时候已经被恶意改了,加密又有什么意义呢。望指点迷津!
      

  2.   

    首先你这是服务端获取客户端的数据,那么要保证数据不被篡改,就得从数据的产生与提交入手首先数据的产生是手机硬件生产的,然后浏览器获取,再到js获取,再到提交其实这些过程的最高权限都是客户,因而数据都是可以伪造的,只是伪造的难度不一样而已。这些环节中较容易伪造的是js获取到提交过程,因为最高权限都是客户,所以是没有办法完全避免伪造的,那么就只能增加别人理解的复杂度,让别人即使知道你的这部分代码是在获取经纬度并提交,但也不能轻易模仿出来首先要对数据进行变换,防止人家直接拦截客户端提交的数据,从而模仿伪造变换后的数据只有你知道怎么理解,人家即使拿到也没办法轻易修改,人家要修改,只能从变换过程入手,那么你还要对对获取、变换、提交的代码进行混淆,让别人很难知道你是怎么处理的。这样别人篡改的难道就大大增加,但还是那句话,所有的这些,最高权限都在客户,人家花大精力还是有可能篡改的。
      

  3.   

    客户端没法预防,只能是你验证一下数据的合法性是否在可接受范围
    你的问题就像 如果防止客户端修改cookie一样 能预防吗?
      

  4.   

    我访问央视的时候是这样提交数据的——32位的系统、64位的浏览器、语言为日语、用出口为法国的代理连接、并且过滤它们发过来的cookies……
      

  5.   


    呃。我的意思是有没办法防止被恶意修改,非人为原因造成的不准确甚至巨大误差,可以接受,但必须防止而已改动,有可能吗?看来我的理解能力真的很有问题。看标题“如何防止客户端数据被篡改伪造?”
    我对你想要做的功能的理解
    1  防止用户使用虚假IP?(PHP识别是否使用了代理IP或者非正常机器访问)
     2 必须限定使用浏览器才可以访问(用JS解决)
    如果不是这两种,那么超出了PHP的解决范围。