- 浏览: 590922 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (154)
- java (31)
- Struts (3)
- Hibernate (8)
- Spring (6)
- JS (14)
- DWR (1)
- Oracle (1)
- SQL Server (0)
- JSF (0)
- JPA (0)
- Grails (3)
- Ajax (1)
- Extjs (0)
- jQuery (4)
- MySQL (2)
- 正则表达式 (2)
- 其他 (6)
- 计算机应用 (7)
- Groovy (8)
- Google (1)
- Web (2)
- MongoDB Java Driver (1)
- mongodb (1)
- Linux (3)
- HTML (1)
- Tomcat (3)
- Eclipse (2)
- JSP (1)
- 缓存 (1)
- 动态 (1)
- 问题与解决 (3)
- HY (1)
- Android (35)
- LBS (1)
最新评论
-
u012136165:
list 方法:纠正:[2,5].add(1,9) ...
Groovy的list和map -
bruce.yuan:
误人子弟的文章。已经看到N个人转了这个帖子,这要贻害多少新人啊 ...
理解并解决GBK转UTF-8奇数中文乱码 -
思念-悲伤:
特意登录上来,感谢下!
理解String的compareTo()方法返回值 -
bo_hai:
总结的好,有效。
理解String的compareTo()方法返回值 -
u012678420:
在onCreate方法中获取某个View的宽度和高度
我们在看书的时候常常看到书上说暴露属性不安全,那么请问下哪里不安全呢?不安全在何处呢?
上网查了些资料,似乎看不出网上说的那些有何不安全。
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
*/
上网查了些资料,似乎看不出网上说的那些有何不安全。
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
*/
发表评论
-
理解并解决GBK转UTF-8奇数中文乱码
2011-06-18 21:29 27100最近在做一个反馈功能,把数据反馈到对方公司网站,我公司是GBK ... -
Java创建对象的四种方法
2010-12-24 15:10 1230package test; import java ... -
文件上传
2010-12-16 09:42 1048我用Excel数据导入来说明文件上传问题 <form ... -
GBK编码转成UTF-8编码
2010-12-03 15:49 1471从GBK编码转成UTF-8编码 private String ... -
HttpClient请求
2010-11-24 18:22 1587一个apache的httpclient简单范本,常用在WebS ... -
接收任意个字符串的方法
2010-11-10 11:32 1098public class MutilStringParamsD ... -
有状态会话Bean(SLSB)和无状态会话Bean(SFSB)的区别(转)
2010-09-26 10:01 1882Session Bean:分有状态 ... -
ThreadLocal解决线程安全问题
2010-09-25 16:55 3277//以下代码存在问题 pub ... -
AOP之Hello World
2010-09-14 23:41 1112目标 package com.aop.joinpoint; ... -
理解Socket
2010-09-03 00:31 1265服务器端代码: import java.io.Buffered ... -
理解TreeSet.add()方法
2010-08-31 17:35 3235Set存放不同元素,TreeSet存放不同元素,并且对元素进行 ... -
一道Java面试题
2010-08-25 15:40 1285有两组字符串,A组["A","B ... -
理解+=操作符
2010-08-23 14:52 959今天看到一篇文章(下面给出原文链接),对作者的错误理解予以纠正 ... -
更深入地理解自增自减运算符
2010-08-20 17:27 1158public class DeepTest { public ... -
理解重载与重写
2010-08-20 15:51 1085今天有个朋友问我重载与覆盖的区别,所以我就写好了发给他。在这贴 ... -
理解继承
2010-08-10 11:52 961这个例子涉及到继承与 ... -
获取properties配置文件信息
2010-08-10 11:32 1697import java.io.IOException; imp ... -
中文字符按拼音排序
2010-06-01 13:12 1612java.util.Comparator cmp = java ... -
线程并发
2010-05-25 21:01 1188进程:表示一个任务。 线程:一种比进程更小的执行单位,依附在进 ... -
了解枚举
2010-05-23 19:05 1501为了了解枚举,先利用反射分析一下它 import java.l ...
相关推荐
针对基于属性的访问控制模型(Attribute-Based Access Control,ABAC)不支持对敏感属性的保护和权限变更的问题,提出基于OSBE的属性访问控制模型。通过改用属性证书的签名,使用户的敏感属性信息不再直接暴露给访问...
所有的更新应及时下载安装,否则系统会很快崩溃 答案:A 3、下面,关于计算机安全属性说法不正确的是______。 A.计算机的安全属性包括:保密性、完整性、不可抵赖性、可靠性等 B.计算机的安全属性包括:保密性、完整...
6. 确保信息不暴露给未经授权的实体的属性指的是______。 A. 保密性 B. 完整性 C. 可用性 D. 可靠性 参考答案: A 7. 通信双方对其收、发过的信息均不可抵赖的特性指的是______。 A. 保密性 B. 不可抵赖性 C.
可靠性 答案:B 确保信息不暴露给未经授权的实体的属性是指系统的______。 A.保密性 B.完整性 C.可用性 D.可靠性 答案:A 发信方对自己曾经发信的行必须承认的特性指的是信息的______。 A.保密性 B.不可抵赖性 C....
同时,物理设备对象的静态和动态属性数据的实时监测不到位。此外,未构建标准化模型,无法实现与第三方平台的接口统一对接,缺乏有效的对象感知能力及第三方扩展能力,在网络安全中处于后知后觉的困境。
⼤数据安全核⼼技术 ⼤数据安全核⼼技术 01 数据采集安全技术 数据采集安全技术 01.01 传输安全 传输安全 虚拟专⽤⽹络将隧道技术、协议封装技术、密码技术和配置管理技术结合在⼀起,采⽤安全通道技术在源端和⽬的...
3:如果 WMI 向外界暴露特定的功能,我如何才能知道? 4:如果 WMI 没有提供我想要的功能,我应该怎么办? 5:在哪里可以找到使用 WMI 的示例脚本? 6: 为什么我的脚本可以在某个版本的 Windows 上运行,但在...
机密性:确保信息不暴露给未授权的实体或进程。 完整性:仅得到允许的人才能修改数据,并能够判别出数据是否已被篡改。 可用性:得到授权的实体在需要时可访问数据,即攻击者不能占用所有的资源而阻碍 授权者的工作...
正确选项:A 确保信息不暴露给未授权的实体的属性指的是___。 选项A:保密性 选项B:完整性 选项C:可用性 选项D:可靠性 正确选项:A 包过滤型防火墙工作在___ 选项A:会话层 选项B:应用层 选项C:网络层 选项D:...
Android Manifest所有属性详细介绍,AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的...
由于P2P系统的开放、匿名等特点,传统的访问控制和认证方法已无法在P2P系统中对信任协商进行有效的支持。本文利用信任协商机制和多...该方法减少了访问者属性信息的不必要暴露,提高了信任协商交互的可靠性和安全性。
每天都有数以亿计的人在依靠大数据获取互联网信息, 这个过程中他们的个人信息也暴露在了互联网之上,为了保障用户的信息隐私,我们需 要提高对于安全以及隐私保护问题的重视程度,革新现有的技术。 一、大数据的...
天地一体化网络因结构复杂存在网络异构动态、间歇连通、节点高度暴露等特性。为了保证安全,需要研究专有的接入认证架构与方法。利用软件定义网络控制面与数据面分离的思想将其与天地一体化信息网络相结合提出一种新...
在不暴露输入密文与输出明文匹配关系的条件下,任何人都可以根据Mix服务器公布的证据验证输出结果的正确性,即满足可公开验证性;任意发送者还可以追踪和检验自己输入的密文的处理过程,即满足发送者可验证性。基于...
同时,这个搜索工具还可以搜出系统隐藏的文件,如果利用这个搜索工具就能轻易地修改掉系统文件,而在隐藏文件暴露的情况下,非常容易受到攻击,而且病毒会利用操作系统漏洞进行攻击。所以用户在qq、msn聊天时,或者...
摘要:如果不假设私钥能保持完美的安全性,那么密码原语就无法部署在不可避免的密钥泄漏不可避免的不安全环境中。 为了有效地减少在基于身份(基于ID)的签名场景中密钥暴露所造成的损害,本文提出了一种基于ID的...
该应用程序不需要任何权限。 PDF流被馈送到沙盒WebView中,而没有访问内容或文件的权限。 Content-Security-Policy用于强制WebView中JavaScript和样式属性是apk资产中的完全静态内容。 它重用了硬化的Chromium渲染...
软液滴隔离是共线安全的,并且等效于在小R限制中领先非平凡顺序的Frixione隔离。 但是,软滴隔离具有民主的有趣特征,这意味着光子可以与强子等效地对待,以进行初始射流聚类。 利用这种民主属性,我们定义了一个...
Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式 Fiddler支持断点调试技术,当你在软件的菜单—rules—automatic breakpoints选项选择before request,或者当这些请求...