2023年-Java编写过程中安全问题解决指南.pdfVIP

  • 0
  • 0
  • 约1.44万字
  • 约 18页
  • 2026-03-09 发布于河北
  • 举报

2023年-Java编写过程中安全问题解决指南.pdf

在本文中,我们讨论了对付13种不同静态暴露的技巧。对于每种暴露,我们解释了不

处理这些安性问题所造成的影响。我们还为您推荐了一些准则,要开发不受这些静态安

性暴露威胁的、健壮且安的Java应用程序,您应该遵循这些准则。一有合适的时机,我

们就提供代码样本(既有暴露的代码也有无暴露的代码)。

对付高严重性暴露的技巧

清遵循下列建议以避免高严重性静态安性暴露:

限制对变量的访问

让每个类和方法都成为final,除非有足够的理由不这样做

不要依赖包作用域

使类不可克隆

使类不可序列化

使类不可逆序列化

避免硬编码敏感数据

查找恶意代码

限制对变量的访问

如果将变量声明为public,那么外部代码就可以操作该变量。这可能会导致安性暴露。

影响

如果实例变量为public,那么就可以在类实例上直接访问和操作该实例变量。将实例变

量声明为protected并不一定能解决这一问题:虽然不可能直接在类实例基础上访问这样的

变量,但仍然可以从派生类访问这个变量。

清单1演示了带有pubic变量的代码,因为变量为public的,所以它暴露了。

清单1.带有public变量的代码

classTest{

publicintid;

protectedStringname;

Test(){

id=1;

name=elloworld;

)

//code

)

publicclassMyClassextendsTest{

publicvoidmetodIllegalSet(Stringname){

(is.namc=name;//tissouldnotbeallowed

)

publicstaticvoidmain(String[]args){

Testobj=newTcst();

obj.id=123;//tissouldnotbeallowed

MyClassme=newMyClass();

mc.mctodlllcgalSctCIllcgalSetValue);

I

)

建议

一般来说,应该使用取信方法而不是public变量。按照具体问题具体对待的原则,在

确定哪些变量特别重要因而应该声明为private时,请将编码的方便程度及成本同安性需

要加以比较。清单2演示了以下列方式来使之安的代码:

清单2.不带有public变量的代码

classTest{

privateintid;

privateStringname;

Test(){

id=I;

name=elloworld;

)

publicvoidsetld(intid){

tis.id=id;

)

publicvoidsctNamc(Stringnamc){

tis.name=name;

)

publicintgetld(){

returnid;

)

publicStringgetName(){

retu

文档评论(0)

1亿VIP精品文档

相关文档