草庐IT

java - Java 中可以进行代码注入(inject)吗?

现在您可以阅读很多关于代码注入(inject)、漏洞利用、缓冲区、堆栈和堆溢出等导致注入(inject)和运行代码的内容。我想知道这些东西中有哪些与Java相关。我知道,Java语言中没有指针。但是JVM不是在堆和/或栈中组织数据吗?我知道没有eval函数(就像在PHP中一样),所以您不能轻松地将输入用作Java代码。我不太确定字节码级别发生了什么。我认为XSS是可能的,例如在JavaEE应用程序中,当没有输入被过滤时。但这不是更多的JavaScript注入(inject),因为注入(inject)的代码在浏览器中运行,而不是在JVM中运行吗?那么哪些代码注入(inject)可以用ja

java - 使用 Google Guice 注入(inject) java 属性

我想使用googleguice使属性在我的应用程序的所有类中可用。我定义了一个加载和绑定(bind)属性文件Test.properties的模块。Property1=TESTProperty2=25包com.test;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;importjava.util.Properties;importcom.google.inject.AbstractModule;importcom.google.inject.name.Names

java - Guice注入(inject)空指针

我们尝试用Guice重构一个项目。这个想法是将所有语言接口(interface)绑定(bind)到一个具体的对象,比如法语或波兰语。我们有一个绑定(bind)模块:publicclassStandardModuleextendsAbstractModule{@Overrideprotectedvoidconfigure(){bind(Language.class).to(Polish.class);}}还有一个使用这个注入(inject)对象的类(AboutDialog.java):@InjectLanguagelanguage;publicAboutDialog(JFramepare

java - 如何使用 Weld 轻松注入(inject)字符串常量?

我们有一种情况,我们以Map的形式为我们正在运行的程序提供外部配置。我发现JSR-330依赖注入(inject)提供了一种更简洁的方法来在代码中使用该配置映射,而不是传递映射或使用JNDI来获取它。@Inject@Named("server.username")Stringusername;让JSR-330实现自动填写此字段。使用Guice我可以设置值bindConstant().annotatedWith(Names.named(key)).to(value);我希望能够在Weld中做同样的事情(将“server.username”绑定(bind)到例如“foobar”)并且我知道该

java - 注入(inject)私有(private)、包裹或公共(public)领域或提供二传手?

我看到许多Java示例使用依赖注入(inject)和私有(private)字段而没有像这样的公共(public)setter:publicSomeClass{@InjectprivateSomeResourceresource;}但是当应该手动执行注入(inject)时,例如在单元测试中,这是一个坏主意。有几种可能性可以解决这个问题:添加一个公共(public)setter:setSomeResource(SomeResourcer)公开该字段使现场包受到保护我想避免使用setter,因为它实际上什么也没有发生。所以我更喜欢public或packageprotected。你有什么建议吗

java - 在注入(inject)点带有限定符 [@Default] 的类型 [...] 的不满足依赖关系(将 @Stateful EJB 与 CDI 结合使用)

我有以下代码来管理两种存储库。两个存储库类都继承了一个接口(interface)以允许重新初始化它们的资源。publicinterfaceCachingRepository{publicvoidinvalidateCache();}全局的、应用范围的存储库:@Named("globalRepo")@ApplicationScopedpublicclassGlobalRepositoryimplementsCachingRepository{privateListcategories;...@OverridepublicvoidinvalidateCache(){categories=n

java - Guice 注入(inject)通用类型

我正在尝试使用Guice注入(inject)通用类型。我有位于Cursor类中的Repository。publicclassCursor{@InjectprotectedRepositoryrepository;所以当我创建Cursor时,我还希望Guice将我的存储库注入(inject)到Repository。有办法做到这一点吗? 最佳答案 你必须使用TypeLiteral:importcom.google.inject.AbstractModule;importcom.google.inject.TypeLiteral;publ

java - Mockito @InjectMocks 不适用于相同类型的字段

我很惊讶地发现下面的简单代码示例并不适用于所有Mockito版本>1.8.5@RunWith(MockitoJUnitRunner.class)publicclassMockitoTest{@Mock(name="b2")privateBb2;@InjectMocksprivateAa;@TestpublicvoidtestInjection()throwsException{assertNotNull(a.b2);//failsassertNull(a.b1);//alsofails,becauseunexpectedlyb2mockgetsinjectedhere}staticcl

java - Guice - 如何通过多个注入(inject)器/模块共享同一个单例实例

在guice中,@Singleton范围不引用Singleton模式。根据《Dhanji》的《DependencyInjection》一书:Verysimply,asingleton’scontextistheinjectoritself.Thelifeofasingletonistiedtothelifeoftheinjector(asinfigure5.8).Therefore,onlyoneinstanceofasingletonisevercreatedperinjector.Itisimportanttoemphasizethislastpoint,sinceitisposs

java - SQL 注入(inject)通常如何在 Spring/Hibernate 设置中停止

我讨厌Ruby语言,因为它不是静态类型的,但我花在Spring/Hibernate上的时间越多,我就越欣赏RubyonRails的特性。特别是他们的ActiveRecord模型可以为您防止SQL注入(inject)。Spring/Hibernate堆栈通常如何处理这个问题?其中任何一个都带有某种清理工具包,以确保您的用户输入是安全的吗?如果您只是插入DAO,这对插入来说不是什么大问题,但在使用Select语句时这是一个主要问题。 最佳答案 当您使用Hibernate时,SQL注入(inject)应该不会有风险-只要您正确使用它。Hi