- 浏览: 597288 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 27223最近在做一个反馈功能,把数据反馈到对方公司网站,我公司是GBK ... -
Java创建对象的四种方法
2010-12-24 15:10 1263package test; import java ... -
文件上传
2010-12-16 09:42 1092我用Excel数据导入来说明文件上传问题 <form ... -
GBK编码转成UTF-8编码
2010-12-03 15:49 1519从GBK编码转成UTF-8编码 private String ... -
HttpClient请求
2010-11-24 18:22 1625一个apache的httpclient简单范本,常用在WebS ... -
接收任意个字符串的方法
2010-11-10 11:32 1139public class MutilStringParamsD ... -
有状态会话Bean(SLSB)和无状态会话Bean(SFSB)的区别(转)
2010-09-26 10:01 1919Session Bean:分有状态 ... -
ThreadLocal解决线程安全问题
2010-09-25 16:55 3309//以下代码存在问题 pub ... -
AOP之Hello World
2010-09-14 23:41 1143目标 package com.aop.joinpoint; ... -
理解Socket
2010-09-03 00:31 1301服务器端代码: import java.io.Buffered ... -
理解TreeSet.add()方法
2010-08-31 17:35 3298Set存放不同元素,TreeSet存放不同元素,并且对元素进行 ... -
一道Java面试题
2010-08-25 15:40 1325有两组字符串,A组["A","B ... -
理解+=操作符
2010-08-23 14:52 992今天看到一篇文章(下面给出原文链接),对作者的错误理解予以纠正 ... -
更深入地理解自增自减运算符
2010-08-20 17:27 1190public class DeepTest { public ... -
理解重载与重写
2010-08-20 15:51 1116今天有个朋友问我重载与覆盖的区别,所以我就写好了发给他。在这贴 ... -
理解继承
2010-08-10 11:52 993这个例子涉及到继承与 ... -
获取properties配置文件信息
2010-08-10 11:32 1731import java.io.IOException; imp ... -
中文字符按拼音排序
2010-06-01 13:12 1647java.util.Comparator cmp = java ... -
线程并发
2010-05-25 21:01 1221进程:表示一个任务。 线程:一种比进程更小的执行单位,依附在进 ... -
了解枚举
2010-05-23 19:05 1539为了了解枚举,先利用反射分析一下它 import java.l ...
相关推荐
标题“行业分类-设备装置-当请求第三方属性证书时排除口令暴露的方法和系统”涉及到的是一个专门针对设备安全、身份验证以及第三方证书请求的问题。这个问题的核心是防止在获取第三方属性证书时用户的口令或敏感信息...
面向铁路信息网络的资产安全属性量化评估方法是确保铁路信息系统安全的关键步骤。随着铁路信息化的推进,信息系统在各个业务领域的核心地位日益凸显,其安全风险直接影响到铁路的正常运营和社会稳定。因此,对信息...
5. **接口形式**:属性可以作为接口的一部分出现,这允许在不暴露内部实现细节的情况下,对外部提供数据访问。 6. **基于属性的索引**:属性可以被用作索引来访问数组或集合中的元素,这种基于属性的索引器提高了...
"Excel文件属性内容批量自动清除"这个话题正聚焦于如何确保Excel工作簿的敏感信息不被泄露。Excel文件通常包含多种属性信息,如作者、创建日期、最后编辑时间等,这些信息可能在无意间暴露出文件的来源和处理历史。...
单调访问结构保证了权限的不可降级性,增强了系统的安全性。 综上所述,全安全的属性基认证密钥交换协议通过利用先进的密码学技术,如CP-ABE和NAXOS,以及创新的访问结构表示方法,实现了更高级别的安全性、灵活的...
因此,开发者应当谨慎处理控件的权限设置,确保只暴露必要的属性,并且对用户的输入进行验证,以防止攻击。 总结来说,"ActiveX控件属性页容器"是Windows编程中的一个重要概念,它是管理和配置ActiveX控件属性的...
此外,由于密码等敏感信息不在代码中暴露,这也有助于提高系统的安全性。 在实际项目中,为了进一步提高安全性,可能会使用更高级的方法,如加密属性文件、使用环境变量或系统属性来存储敏感信息,甚至利用容器提供...
- 当添加自定义属性时,确保处理好权限和安全性,因为这些属性可能会暴露敏感信息。 - 在设计自定义属性时,应考虑用户体验,确保字段易于理解和操作。 - 测试是关键,确保在不同环境中都能正确显示和保存自定义...
在C#中,属性通过get和set访问器实现,使得开发人员可以在不暴露内部字段的情况下,对外部提供一种可控的访问机制。这种机制不仅增强了代码的安全性,还提供了额外的功能,如在获取或设置属性值时执行某些操作。 ...
属性允许我们在不暴露内部实现细节的情况下,为类的外部提供数据的读取和写入。属性通常由getter和setter方法组成,分别用于获取和设置值。 ```csharp public class MyClass { private int myValue; // 私有变量 ...
其中,隐藏属性使得文件或文件夹在常规视图下不显示,只有在特定设置下(如查看隐藏文件和文件夹)才能看到。这种特性有时用于保护敏感信息,但也可能被恶意软件利用来隐藏其活动。 恢复文件夹隐藏属性的过程通常...
在Web开发中,安全是至关重要的,因为不安全的代码可能导致数据泄露、用户信息被窃取,甚至整个系统的瘫痪。随着互联网技术的发展,攻击者利用各种漏洞发起的攻击手段也在不断进化,因此,开发者必须时刻保持警惕,...
在面向对象编程(Object-Oriented Programming, OOP)中,封装是其核心概念之一,旨在通过隐藏对象内部状态和细节来保护数据的安全性,并通过提供公共接口来实现对外的功能暴露。本实验旨在帮助学习者深入理解OOP中...
由于Swift的强类型特性和安全机制,直接通过反射(reflection)来获取类属性并不像Objective-C那样直接。然而,通过Swift的runtime库,我们仍然可以实现这一功能。本文将详细介绍如何利用`class_copyPropertyList`方法...
安全架构概述部分主要描述了5G系统中各个安全实体的作用以及它们在不同安全域内的定位,包括但不限于5G核心网络周边的安全实体和5G核心网络中的安全实体。 在安全要求和功能章节中,列出了5G系统所需满足的安全要求...
3. **封装**:私有属性和方法的核心思想是封装,即隐藏类的实现细节,只暴露必要的接口给外部使用,这有助于提高代码的安全性和可维护性。 总之,虽然Python中并没有严格的`private`关键字来实现真正的私有性,但...
4. **安全与风险**:修改系统属性,尤其是开启`ro.debuggable`,会增加系统的暴露程度,因为可调试状态可能会让恶意软件更容易分析和攻击系统。因此,仅在必要时使用此工具,并确保在调试完成后及时恢复默认设置,以...