我正在尝试使用Struts 1.3.8的应用程序实现HDIV。
我在pom文件和侦听器中添加了依赖项,在web.xml文件中添加了过滤器。
令牌_HDIV_STATE_被注入到每个页面的链接中。
因此,为了测试它对CSRF攻击是否按预期工作,我在应用程序外部制作了一个小html页面,该页面将数据发送到应用程序以修改某些数据,以模拟CSRF攻击。
不幸的是,该测试是成功的,因为已修改了目标数据。
当我检查日志时,似乎HDIV检测到该请求不包含_HDIV_STATE_,但是它没有取消请求并重定向到错误页面或其他内容。
我的配置错误吗?或者当请求中不存在令牌时,我根本不理解HDIV会做什么?
谢谢你的帮助
pom.xml:
<dependency>
<groupId>org.hdiv</groupId>
<artifactId>hdiv-config</artifactId>
<version>2.1.12</version>
</dependency>
<dependency>
<groupId>org.hdiv</groupId>
<artifactId>hdiv-struts-1</artifactId>
<version>2.1.12</version>
</dependency>
<dependency>
<groupId>org.hdiv</groupId>
<artifactId>hdiv-jstl-taglibs-1.2</artifactId>
<version>2.1.12</version>
</dependency>
web.xml
<listener>
<listener-class>org.hdiv.listener.InitListener</listener-class>
</listener>
<filter>
<filter-name>ValidatorFilter</filter-name>
<filter-class>org.hdiv.filter.ValidatorFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ValidatorFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/tld/struts-html-el.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/hdiv-html-el.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/tld/struts-logic-el.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/hdiv-logic-el.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/tld/c.tld</taglib-uri>
<taglib-location>/WEB-INF/tld/hdiv-c.tld</taglib-location>
</taglib>
</jsp-config>
hdiv-config.hml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:hdiv="http://www.hdiv.org/schema/hdiv"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.hdiv.org/schema/hdiv
http://www.hdiv.org/schema/hdiv/hdiv.xsd">
<hdiv:config excludedExtensions="css,png,gif,jpeg,jpg,js" errorPage="/error.jsp"
maxPagesPerSession="2" debugMode="true">
<hdiv:sessionExpired loginPage="/index.jsp" homePage="/"/>
<hdiv:startPages>/index.jsp</hdiv:startPages>
</hdiv:config>
</beans>
最佳答案
您已在hdiv-config.xml中激活了debugMode:
从HDIV Reference Documentation:
HDIV提供了调试执行模式,以便将HDIV应用于生产环境中而不会出现任何功能或集成问题。换句话说,HDIV处理并验证所有请求,但不更改请求的原始执行,仅记录可能的攻击但不停止它。
尝试禁用debugMode。
Fernando Lozano(HDIV团队)