210327:URL存在http host的頭攻擊漏洞-IDEA EasyCode(代碼神器)-java.io.IOException: Too many open files解決方案-Linu...

一. URL存在http host的頭攻擊漏洞

漏洞詳細(xì)信息展示

上述問(wèn)題出現(xiàn)的原因?yàn)樵陧?xiàng)目中使用了request.getServerName導(dǎo)致漏洞的出現(xiàn)

不要使用request中的serverName,也就是說(shuō)host header可能會(huì)在攻擊時(shí)被篡改,依賴request的方法是不可靠的,形如JSP頭部中的:

String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

這樣的使用方法就會(huì)被漏洞檢測(cè)工具查出來(lái),認(rèn)定有頭攻擊漏洞。

修復(fù)方案:

1. 基于tomcat的修復(fù)

打開(kāi)tomcatconf目錄中的server.xml文件,在<Host>節(jié)點(diǎn)做如下配置:

<Host name="localhost"  appBase="webapps"  
      unpackWARs="true" autoDeploy="true"  
      xmlValidation="false" xmlNamespaceAware="false"> 
    <Alias>10.1.8.158</Alias><!--10.1.8.158 本地局域網(wǎng)-->  
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
           prefix="localhost_access_log." suffix=".txt"  resolveHosts="false"  
           pattern="%a %A %b %B %h %H %l %m %p %s %S %t %u %U %v %D %T" />  
</Host>

此種方式僅支持Tomcat6.0.x以上版本的修復(fù)、網(wǎng)上有基于Filter的修復(fù)方式,試了幾個(gè)都沒(méi)起用。

漏洞驗(yàn)證參考文章

二. IDEA EasyCode(代碼神器)

Easycode是idea的一個(gè)插件,可以直接對(duì)數(shù)據(jù)的表生成entity,controller,service,dao,mapper,無(wú)需任何編碼,簡(jiǎn)單而強(qiáng)大。

1. 安裝(EasyCode)

2. 建立數(shù)據(jù)庫(kù)

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
    `id` int(11) NOT NULL,
    `username` varchar(20) DEFAULTNULL,
    `sex` varchar(6) DEFAULTNULL,
    `birthday` date DEFAULTNULL,
    `address` varchar(20) DEFAULTNULL,
    `password` varchar(20) DEFAULTNULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;

3. 在IDEA配置連接數(shù)據(jù)庫(kù)

在這個(gè)之前,新建一個(gè)Springboot項(xiàng)目,這個(gè)應(yīng)該是比較簡(jiǎn)單的。

建好SpringBoot項(xiàng)目之后,如下圖所示,找到這個(gè)Database

按照如下圖所示進(jìn)行操作:

然后填寫數(shù)據(jù)庫(kù)名字,用戶名,密碼。點(diǎn)擊OK即可。這樣的話,IDEA連接數(shù)據(jù)庫(kù)就完事了.

4. 開(kāi)始生成代碼

在這個(gè)里面找到你想生成的表,然后右鍵,就會(huì)出現(xiàn)如下所示的截面。

點(diǎn)擊1所示的位置,選擇你要將生成的代碼放入哪個(gè)文件夾中,選擇完以后點(diǎn)擊OK即可。

勾選你需要生成的代碼,點(diǎn)擊OK。

這樣的話就完成了代碼的生成了,生成的代碼如下圖所示:

5. pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

<!--熱部署-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional><!-- 這個(gè)需要為 true 熱部署才有效 -->
</dependency>

<!--mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

<!-- mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

<!--阿里巴巴連接池-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.9</version>
</dependency>

6. Application.yml

server:
  port: 8089
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
mybatis:
  mapper-locations: classpath:/mapper/*Dao.xml
  typeAliasesPackage: com.vue.demo.entity

7. 啟動(dòng)項(xiàng)目

在啟動(dòng)項(xiàng)目之前,我們需要先修改兩個(gè)地方。

在dao層加上@mapper注解

在啟動(dòng)類里面加上@MapperScan("com.vue.demo.dao")注解。

啟動(dòng)項(xiàng)目,測(cè)試一下

三. java.io.IOException: Too many open files解決方案

  1. 使用ps -ef |grep java (java代表你程序,查看你程序進(jìn)程) 查看你的進(jìn)程ID,記錄ID號(hào),假設(shè)進(jìn)程ID為12

  2. 使用:lsof -p 12 | wc -l 查看當(dāng)前進(jìn)程id為12的 文件操作狀況

    執(zhí)行該命令出現(xiàn)文件使用情況為 1052

  3. 使用命令:ulimit -a 查看每個(gè)用戶允許打開(kāi)的最大文件數(shù)

    發(fā)現(xiàn)系統(tǒng)默認(rèn)的是open files (-n) 1024,問(wèn)題就出現(xiàn)在這里。

  4. 然后執(zhí)行:ulimit -n 4096

    open files (-n) 1024 設(shè)置成open files (-n) 4096

這樣就增大了用戶允許打開(kāi)的最大文件數(shù)

另一種解決方案參考文章

四. Linux中切換jdk版本

目前的linux中的jdk是1.8現(xiàn)在想換成1.7的該如何操作呢?

1. 下載jdk1.7

可在官網(wǎng)下載

鏈接:https://pan.baidu.com/s/1ZYQQJ6uO0g4B8Ff4wNLvhQ
提取碼:yxo7

2. 解壓安裝

首先現(xiàn)在/usr目錄下面創(chuàng)建java文件夾 ,然后將jdk-7u80-linux-x64.tar.gz解壓到該目錄下。

mkdir /usr/java

將下載好的jdk壓縮包導(dǎo)入到/user/java文件夾下(這里可以用CRT自帶的工具進(jìn)行導(dǎo)入)

對(duì)壓縮包進(jìn)行解壓

tar -zxvf jdk-7u80-linux-x64.tar.gz

刪除原來(lái)的jdk版本

rm -f /usr/bin/java 
rm -f /usr/bin/javac
rm -f /etc/alternatives/java
rm -f /etc/alternatives/javac

向/etc/profile中添加以下內(nèi)容

export JAVA_HOME=/usr/java/jdk1.7.0_80
export JAVA_BIN=/usr/java/jdk1.7.0_80/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME JAVA_BIN PATH CLASSPATH

讓/etc/profile文件修改后立即生效 ,可以使用如下命令(./間有空格):

. /etc/profile

之后在查詢jdk版本就已經(jīng)更改完了,可以輸入java -version命令驗(yàn)證

五. 在Windows安裝運(yùn)行Kafka

1. 安裝JAVA JDK

1、下載安裝包

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

注意:根據(jù)32/64位操作系統(tǒng)下載對(duì)應(yīng)的安裝包

2、添加系統(tǒng)變量:JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_144

2. 安裝Zookeeper

  1. 下載安裝包

    http://zookeeper.apache.org/releases.html#download

  2. 解壓并進(jìn)入ZooKeeper目錄,如:D:\Kafka\zookeeper-3.4.9\conf

  3. 將“zoo_sample.cfg”重命名為“zoo.cfg”

  4. 打開(kāi)“zoo.cfg”找到并編輯dataDir=D:\Kafka\zookeeper-3.4.9\tmp(必須以\分割)

  5. 添加系統(tǒng)變量:ZOOKEEPER_HOME=D:\Kafka\zookeeper-3.4.9

  6. 編輯path系統(tǒng)變量,添加路徑:%ZOOKEEPER_HOME%\bin

  7. 在zoo.cfg文件中修改默認(rèn)的Zookeeper端口(默認(rèn)端口2181)

  8. 打開(kāi)新的cmd,輸入“zkServer“,運(yùn)行Zookeeper

  9. 命令行提示如下:說(shuō)明本地Zookeeper啟動(dòng)成功

3. 安裝Kafka

1、 下載安裝包

http://kafka.apache.org/downloads

注意要下載二進(jìn)制版本

2、 解壓并進(jìn)入Kafka目錄,筆者:D:\Kafka\kafka_2.12-0.11.0.0

3、 進(jìn)入config目錄找到文件server.properties并打開(kāi)

4、 找到并編輯log.dirs=D:\Kafka\kafka_2.12-0.11.0.0\kafka-logs

5、 找到并編輯zookeeper.connect=localhost:2181

6、 Kafka會(huì)按照默認(rèn),在9092端口上運(yùn)行,并連接zookeeper的默認(rèn)端口:2181

7、 進(jìn)入Kafka安裝目錄D:\Kafka\kafka_2.12-0.11.0.0,按下Shift+右鍵,選擇“打開(kāi)命令窗口”選項(xiàng),打開(kāi)命令行,輸入:

.\bin\windows\kafka-server-start.bat .\config\server.properties

或者

bin\kafka-server-start.sh config\server.properties

注意:注意:不要關(guān)了這個(gè)窗口,啟用Kafka前請(qǐng)確保ZooKeeper實(shí)例已經(jīng)準(zhǔn)備好并開(kāi)始運(yùn)行

4. 測(cè)試

4.1 創(chuàng)建主題

D:\develop_tools\kafka\kafka_2.11-2.2.0\bin\windows 目錄,打開(kāi)新窗口,

創(chuàng)建一個(gè)名稱為 test 主題,命令如下:

kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

如圖所示:

4.2 查看主題

D:\develop_tools\kafka\kafka_2.11-2.2.0\bin\windows 目錄,打開(kāi)新窗口,輸入命令:

kafka-topics.bat --list --zookeeper localhost:2181

4.3 創(chuàng)建生產(chǎn)者

D:\develop_tools\kafka\kafka_2.11-2.2.0\bin\windows 目錄,打開(kāi)新窗口,輸入命令:

kafka-console-producer.bat --broker-list localhost:9092 --topic test

4.4 創(chuàng)建消費(fèi)者

D:\develop_tools\kafka\kafka_2.11-2.2.0\bin\windows 目錄,打開(kāi)新窗口,輸入命令:

kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

4.5 數(shù)據(jù)測(cè)試

生產(chǎn)者 窗口輸入數(shù)據(jù),在 消費(fèi)者 接收到數(shù)據(jù)

參考Kafka2.2.0 在 Windows 安裝(入門)

參考在Windows安裝運(yùn)行Kafka

六. Oracle中查詢某用戶下的表,視圖等

select * from all_tab_comments -- 查詢所有用戶的表,視圖等。

select * from user_tab_comments -- 查詢本用戶的表,視圖等。

select * from all_col_comments  --查詢所有用戶的表的列名和注釋。

select * from user_col_comments -- 查詢本用戶的表的列名和注釋。

select * from all_tab_columns --查詢所有用戶的表的列名等信息。

select * from user_tab_columns --查詢本用戶的表的列名等信息。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、下載安裝包 http://www.oracle.com/technetwork/java/javase/dow...
    行走的大海閱讀 341評(píng)論 0 0
  • 1.前言: 一般來(lái)說(shuō)kafka和Zookeeper都是部署在服務(wù)器上使用的,但是有時(shí)候在項(xiàng)目測(cè)試階段也要求在本地要...
    愛(ài)寶寶n閱讀 1,073評(píng)論 0 1
  • 在非結(jié)構(gòu)化數(shù)據(jù)領(lǐng)域,技術(shù)帶來(lái)了前所未有的爆炸性變化。移動(dòng)設(shè)備、Web站點(diǎn)、社交媒體、科學(xué)儀器、衛(wèi)星、IoT設(shè)備以及...
    達(dá)微閱讀 3,095評(píng)論 1 2
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • 問(wèn)題描述: 在生產(chǎn)環(huán)境中,為了方便將kafka做成了一個(gè)服務(wù),使用systemctl start kafka,ka...
    丿Alex閱讀 6,566評(píng)論 0 4

友情鏈接更多精彩內(nèi)容