`

暴露属性不安全?

    博客分类:
  • java
阅读更多
我们在看书的时候常常看到书上说暴露属性不安全,那么请问下哪里不安全呢?不安全在何处呢?
上网查了些资料,似乎看不出网上说的那些有何不安全。
IBM网站的一篇文章(您的 Java 代码安全吗 — 还是暴露在外?-->限制对变量的访问)写道:因为变量为 public 的,所以它暴露了。将其改成以private修饰,用get/set赋值的方式来使之安全的代码。

文章链接:
http://www.ibm.com/developerworks/cn/java/j-staticsec/index.html

即使你禁止掉了在子类中用this.name = name;来改变从父类继承过来的name属性值,可你还是可以在子类中用从父类继承过来的setName()方法改变从父类继承过来的name属性值。

百度知道中的一篇文章写道:get/set方法也不一定只是简单的作一个赋值,或一个返回值吧,在这里可以作一些权限的控制,比如不是每个角色都可以赋值的。再比如返回的值不一定是值本身,可以是经过处理了的,比如加密,这用public定义是不能作到的。

文章链接:
http://zhidao.baidu.com/question/115580824.html

在get/set中是可以做一些处理,但这和安全无关,我们取到值后也一样可以做这些处理。不是吗?

网上对这个问题的资料不多,以下是我研究暴露属性不安全的一点,欢迎大家一起讨论。

class Parent {
public String name = "PARENT"; //暴露属性
public void fn() {
System.out.println(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Son extends Parent {
public String name = "SON"; //暴露属性
public void fn() {
System.out.println(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

public class Test {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("TEST1:");
Parent s = new Son(); //通常以父类或接口编程
System.out.println(s.name); //注意:取得的是父类属性值
System.out.println(s.getName()); //这才是期望值
s.fn();
System.out.println();

System.out.println("TEST2:");
s.name = "A"; //不安全,改变的是父类属性值,子类属性值并没有改变
System.out.println(s.name);
System.out.println(s.getName());
s.fn();
System.out.println();

System.out.println("TEST3:");
s.name = "PARENT"; //把设回初始状态
s.setName("A"); //安全,改变的子类属性值
System.out.println(s.name);
System.out.println(s.getName());
s.fn();
}
}
/**OutPut
TEST1:
PARENT
SON
SON

TEST2:
A
SON
SON

TEST3:
PARENT
A
A
*/

Java的框架一般都是以接口(Interface)编程,这是为了通用性。而接口中定义的属性都默认是public static final的,根据上面例子,当实现类向上转型到接口,就不能直接把值赋给属性(因为接口的属性是final的),而要用set方法
interface P {
String name = "Bruce";
void setName(String name);
String getName();
}
class S implements P {
private String name = "Phil";
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
public class Test {
    public static void main(String[] args){
    P p = new S();
    //p.name = "Phil"; //The final field P.name connot be assigned
    p.setName("Phil");
    System.out.println("P.name=" + p.name);
    System.out.println("S.name=" + p.getName());
    }
}
/**OutPut
P.name=Bruce
S.name=Phil
*/
分享到:
评论

相关推荐

    论文研究-基于OSBE的属性访问控制模型.pdf

    针对基于属性的访问控制模型(Attribute-Based Access Control,ABAC)不支持对敏感属性的保护和权限变更的问题,提出基于OSBE的属性访问控制模型。通过改用属性证书的签名,使用户的敏感属性信息不再直接暴露给访问...

    2018年12月统考计算机应用基础-计算机安全.doc

    所有的更新应及时下载安装,否则系统会很快崩溃 答案:A 3、下面,关于计算机安全属性说法不正确的是______。 A.计算机的安全属性包括:保密性、完整性、不可抵赖性、可靠性等 B.计算机的安全属性包括:保密性、完整...

    电大计算机网考真题计算机安全.doc

    6. 确保信息不暴露给未经授权的实体的属性指的是______。 A. 保密性 B. 完整性 C. 可用性 D. 可靠性 参考答案: A 7. 通信双方对其收、发过的信息均不可抵赖的特性指的是______。 A. 保密性 B. 不可抵赖性 C.

    安全、多媒体单选题讲解.docx

    可靠性 答案:B 确保信息不暴露给未经授权的实体的属性是指系统的______。 A.保密性 B.完整性 C.可用性 D.可靠性 答案:A 发信方对自己曾经发信的行必须承认的特性指的是信息的______。 A.保密性 B.不可抵赖性 C....

    电力系统省级网络安全指挥系统应用研究.docx

    同时,物理设备对象的静态和动态属性数据的实时监测不到位。此外,未构建标准化模型,无法实现与第三方平台的接口统一对接,缺乏有效的对象感知能力及第三方扩展能力,在网络安全中处于后知后觉的困境。

    大数据安全核心技术.pdf

    ⼤数据安全核⼼技术 ⼤数据安全核⼼技术 01 数据采集安全技术 数据采集安全技术 01.01 传输安全 传输安全 虚拟专⽤⽹络将隧道技术、协议封装技术、密码技术和配置管理技术结合在⼀起,采⽤安全通道技术在源端和⽬的...

    Windows Management Instrumentation(WMI):常见问题

    3:如果 WMI 向外界暴露特定的功能,我如何才能知道? 4:如果 WMI 没有提供我想要的功能,我应该怎么办? 5:在哪里可以找到使用 WMI 的示例脚本? 6: 为什么我的脚本可以在某个版本的 Windows 上运行,但在...

    浅谈网络安全防护技术.doc

    机密性:确保信息不暴露给未授权的实体或进程。 完整性:仅得到允许的人才能修改数据,并能够判别出数据是否已被篡改。 可用性:得到授权的实体在需要时可访问数据,即攻击者不能占用所有的资源而阻碍 授权者的工作...

    兰州大学兰大《计算机安全技术》21春平时作业3.docx

    正确选项:A 确保信息不暴露给未授权的实体的属性指的是___。 选项A:保密性 选项B:完整性 选项C:可用性 选项D:可靠性 正确选项:A 包过滤型防火墙工作在___ 选项A:会话层 选项B:应用层 选项C:网络层 选项D:...

    AndroidManifest所有属性详细介绍

    Android Manifest所有属性详细介绍,AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的...

    P2P系统中基于属性约减的可信度评价 (2009年)

    由于P2P系统的开放、匿名等特点,传统的访问控制和认证方法已无法在P2P系统中对信任协商进行有效的支持。本文利用信任协商机制和多...该方法减少了访问者属性信息的不必要暴露,提高了信任协商交互的可靠性和安全性。

    大数据安全与隐私保护.doc

    每天都有数以亿计的人在依靠大数据获取互联网信息, 这个过程中他们的个人信息也暴露在了互联网之上,为了保障用户的信息隐私,我们需 要提高对于安全以及隐私保护问题的重视程度,革新现有的技术。 一、大数据的...

    论文研究-软件定义天地一体化网络接入认证架构与方法.pdf

    天地一体化网络因结构复杂存在网络异构动态、间歇连通、节点高度暴露等特性。为了保证安全,需要研究专有的接入认证架构与方法。利用软件定义网络控制面与数据面分离的思想将其与天地一体化信息网络相结合提出一种新...

    选择密文安全的可验证Mix-Net协议

    在不暴露输入密文与输出明文匹配关系的条件下,任何人都可以根据Mix服务器公布的证据验证输出结果的正确性,即满足可公开验证性;任意发送者还可以追踪和检验自己输入的密文的处理过程,即满足发送者可验证性。基于...

    搜索软件对网络安全的影响.docx

    同时,这个搜索工具还可以搜出系统隐藏的文件,如果利用这个搜索工具就能轻易地修改掉系统文件,而在隐藏文件暴露的情况下,非常容易受到攻击,而且病毒会利用操作系统漏洞进行攻击。所以用户在qq、msn聊天时,或者...

    基于无配对ID的密钥绝缘签名方案

    摘要:如果不假设私钥能保持完美的安全性,那么密码原语就无法部署在不可避免的密钥泄漏不可避免的不安全环境中。 为了有效地减少在基于身份(基于ID)的签名场景中密钥暴露所造成的损害,本文提出了一种基于ID的...

    PdfViewer:基于pdf.js和内容提供商的简单Android PDF查看器。 该应用程序不需要任何权限。 PDF流被馈送到沙盒WebView中,而没有访问内容或文件的权限。 CSP用于强制WebView中JavaScript和样式属性是完全静态的

    该应用程序不需要任何权限。 PDF流被馈送到沙盒WebView中,而没有访问内容或文件的权限。 Content-Security-Policy用于强制WebView中JavaScript和样式属性是apk资产中的完全静态内容。 它重用了硬化的Chromium渲染...

    光子隔离和射流子结构

    软液滴隔离是共线安全的,并且等效于在小R限制中领先非平凡顺序的Frixione隔离。 但是,软滴隔离具有民主的有趣特征,这意味着光子可以与强子等效地对待,以进行初始射流聚类。 利用这种民主属性,我们定义了一个...

    Fiddler Web抓包工具

    Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式 Fiddler支持断点调试技术,当你在软件的菜单—rules—automatic breakpoints选项选择before request,或者当这些请求...

Global site tag (gtag.js) - Google Analytics