一. 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)tomcat的conf目錄中的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)起用。
二. 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解決方案
使用
ps -ef |grep java(java代表你程序,查看你程序進(jìn)程) 查看你的進(jìn)程ID,記錄ID號(hào),假設(shè)進(jìn)程ID為12-
使用:
lsof -p 12 | wc -l查看當(dāng)前進(jìn)程id為12的 文件操作狀況執(zhí)行該命令出現(xiàn)文件使用情況為 1052
-
使用命令:
ulimit -a查看每個(gè)用戶允許打開(kāi)的最大文件數(shù)發(fā)現(xiàn)系統(tǒng)默認(rèn)的是open files (-n) 1024,問(wèn)題就出現(xiàn)在這里。
-
然后執(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
-
下載安裝包
解壓并進(jìn)入ZooKeeper目錄,如:D:\Kafka\zookeeper-3.4.9\conf
將“zoo_sample.cfg”重命名為“zoo.cfg”
打開(kāi)“zoo.cfg”找到并編輯dataDir=D:\Kafka\zookeeper-3.4.9\tmp(必須以\分割)
添加系統(tǒng)變量:ZOOKEEPER_HOME=D:\Kafka\zookeeper-3.4.9
編輯path系統(tǒng)變量,添加路徑:%ZOOKEEPER_HOME%\bin
在zoo.cfg文件中修改默認(rèn)的Zookeeper端口(默認(rèn)端口2181)
打開(kāi)新的cmd,輸入“zkServer“,運(yùn)行Zookeeper
命令行提示如下:說(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ù)


六. 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 --查詢本用戶的表的列名等信息。