小编Cha*_*esC的帖子

Tomcat虚拟主机可防止不正确的输入处理攻击

我目前正在尝试修复网站漏洞,基本上它是一种"错误的输入处理"攻击.

假设我的网站是 www.mywebsite.com ,还有黑客的网站www.hacker.com

每当有请求发送到www.mywebsite.com并且修改后的" Host"标题指向www.hacker.com时,我的网站将创建一个重定向到www.mywebsite.com以及它的网址.例如

正常:

Host: www.mywebsite.com 
GET  www.mywebsite.com/get/some/resources/
Reponse 200 ok
Run Code Online (Sandbox Code Playgroud)

哈克:

Host: www.hacker.com (#been manually modified) 
GET  www.mywebsite.com/get/some/resources/
Response 302 
Send another Redirect to www.hacker.com/get/some/resources 
Run Code Online (Sandbox Code Playgroud)

我的网站是在Tomcat 7上运行的,我尝试了一些解决方案,通过将未知主机设置为虚拟主机defaultlocalhost,假设什么都不做.但它仍然出于某种原因发送重定向.

这附件是我的server.xml主机配置:

<Engine name="Catalina" defaultHost="defaultlocalhost" jvmRoute="jvm1">  
<Host name="www.mywebsite.com"  appBase="webapps"
        unpackWARs="true" autoDeploy="false" deployOnStartup="true">

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  </Host>

  <Host name="defaultlocalhost"  >

  </Host>
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,我是否在正确的轨道上防止这种攻击?如果是的话,我做错了什么仍然无效?(最终目标是,如果它不是传入的合法主机,请求应该被丢弃/忽略/返回404但不能重定向302)

先感谢您.

有关此次攻击的更多参考资料:http: //www.skeletonscribe.net/2013/05/practical-http-host-header-attacks.html

http://projects.webappsec.org/w/page/13246933/Improper%20Input%20Handling

security tomcat tomcat7

9
推荐指数
1
解决办法
691
查看次数

Gradle抱怨它不能将long转换为int,即使该方法需要很长时间作为参数

当运行"gradle build"时,我的一个项目出现了以下错误,其中几个类得到以下编译错误:

cannot be applied to given types;
                this._logFilter.setFirstResult(firstResult);
                               ^
  required: int
  found: long
  reason: actual argument long cannot be converted to int by method invocation conversion
Run Code Online (Sandbox Code Playgroud)

即使该方法setFirstResult采用longas参数.这是代码:

public void setFirstResult(long firstResult) {
    this._firstResult = firstResult;
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试--refresh-dependencies并清除了缓存等.这些都不适用于我.此外,这个项目是一个maven项目,我将其转换为使用gradle.

编辑:

我根据评论的请求在这里添加了额外的上下文:

这是源代码 this._logFilter

public class GlobalMessageLogFilter {
    private long _firstResult = 0L;

    private long _maxResults = 100L;

    private Application _application;

    private SeverityLevelEnum _severityLevel;

    private EnvironmentEnum _environment;

    private String _userName;

    private Category _category;

    public EnvironmentEnum getEnvironment() …
Run Code Online (Sandbox Code Playgroud)

java gradle gradle-eclipse build.gradle

6
推荐指数
1
解决办法
215
查看次数

具有集成SQL安全性的Gradle

我目前正致力于将我们的一个Maven项目转换为使用Gradle.这是我目前面临的问题:

该项目使用SQL Integrated安全性.以下是Maven如何处理它(这需要我们一段时间来解决它):

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/libs/sqljdbc4.jar</systemPath>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

运行后,gradle init --type pom 这个特定的dependency转换为这样的东西:

system group: 'com.microsoft.jdbcdriver', name: 'sqljdbc', version:'4.0.1'
Run Code Online (Sandbox Code Playgroud)

这是不对的.Gradle无法建立.更具体地说,system范围甚至不存在于Gradle的API中(我都没有在任何第三方Gradle插件中找到它).

任何有Gradle SQL集成安全性经验的人都会非常感激.

sql-server gradle maven build.gradle

5
推荐指数
1
解决办法
3400
查看次数