用 于 网 络 、 分 布 环 境 下 的 Java必 须 要 防 止 病 毒 的 入 侵 。Java 不 支 持 指 针 ,一切 对 内 存 的 访 问 都 必 须 通 过 对 象 的 实 例 变 量 来 实 现 ,这 样 就防 止 程 序 员 使 用 "特洛 伊 " 木 马 等 欺 骗 手 段 访 问 对 象 的 私 有 成 员 ,同 时 也 避 免 了指 针 操 作中 容 易 产 生的 错 误 。 看到这里我有些不懂,‘木 马 等 欺 骗 手 段 访 问 对 象 的 私 有 成 员’是怎么一个原理,不知道php有没有这个弊端。还是这种说法,是以前的 漏洞。javaphp

解决方案 »

  1.   

    eval is evil 就是这样来的其实这只是托词,事在人为
      

  2.   

    这说的应该是语言内部的一些机制。不过我也不是非常理解这句话什么意思。你实例化了一个对象,这个对象在内存中的某个地址中,在cpp中,你可以直接用一个指针指向这个地址。不过这有什么用呢?这样我就能访问那个对象的私有成员了?那么在php或java中,我可以对那个对象做clone,或者直接建立一个到那个对象的引用。在我看来,这和直接将指针指向那个对象没什么区别。
      

  3.   


    具体点就是,很多黑客把代码(很多时候就是一句eval语句)嵌入到某个伪造文件(例如jpg)上传
    然后以远程方式运行这个jpg(如果没做防范是可以运行的,但具体怎样做到我就不懂了,偶不是黑客),那句eval只是打开一扇门,生成一个新的php文件,这样就能做很多事情了
    很多人因此建议开发者取消或禁用eval语句,因为eval语句几乎可以运行任何语句,但事实上做好防范功夫才是最实际,很多时候并不是禁用一个eval就能解决问题的