一. URL存在http host的頭攻擊漏洞
漏洞詳細信息展示
上述問題出現(xiàn)的原因為在項目中使用了request.getServerName
導致漏洞的出現(xiàn)
不要使用request
中的serverName
排作,也就是說host header
可能會在攻擊時被篡改勉痴,依賴request
的方法是不可靠的疾掰,形如JSP頭部中的:
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
這樣的使用方法就會被漏洞檢測工具查出來,認定有頭攻擊漏洞。
修復方案:
1. 基于tomcat的修復
打開tomcat
的conf
目錄中的server.xml
文件奕筐,在<Host>
節(jié)點做如下配置:
<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以上版本的修復、網(wǎng)上有基于Filter的修復方式,試了幾個都沒起用蝎困。
二. IDEA EasyCode(代碼神器)
Easycode是idea的一個插件,可以直接對數(shù)據(jù)的表生成entity,controller,service,dao,mapper,無需任何編碼倍啥,簡單而強大禾乘。
1. 安裝(EasyCode)
2. 建立數(shù)據(jù)庫
-- ----------------------------
-- 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ù)庫
在這個之前,新建一個Springboot項目虽缕,這個應該是比較簡單的始藕。
建好SpringBoot項目之后,如下圖所示氮趋,找到這個Database
按照如下圖所示進行操作:
然后填寫數(shù)據(jù)庫名字伍派,用戶名,密碼剩胁。點擊OK即可诉植。這樣的話,IDEA連接數(shù)據(jù)庫就完事了.
4. 開始生成代碼
在這個里面找到你想生成的表昵观,然后右鍵晾腔,就會出現(xiàn)如下所示的截面。
點擊1所示的位置索昂,選擇你要將生成的代碼放入哪個文件夾中建车,選擇完以后點擊OK即可。
勾選你需要生成的代碼椒惨,點擊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><!-- 這個需要為 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. 啟動項目
在啟動項目之前,我們需要先修改兩個地方领斥。
在dao層加上@mapper注解
在啟動類里面加上@MapperScan("com.vue.demo.dao")注解嫉到。
啟動項目,測試一下
三. java.io.IOException: Too many open files解決方案
使用
ps -ef |grep java
(java代表你程序月洛,查看你程序進程) 查看你的進程ID何恶,記錄ID號,假設進程ID為12-
使用:
lsof -p 12 | wc -l
查看當前進程id為12的 文件操作狀況執(zhí)行該命令出現(xiàn)文件使用情況為 1052
-
使用命令:
ulimit -a
查看每個用戶允許打開的最大文件數(shù)發(fā)現(xiàn)系統(tǒng)默認的是open files (-n) 1024嚼黔,問題就出現(xiàn)在這里细层。
-
然后執(zhí)行:
ulimit -n 4096
將
open files (-n) 1024
設置成open files (-n) 4096
這樣就增大了用戶允許打開的最大文件數(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壓縮包導入到/user/java文件夾下(這里可以用CRT自帶的工具進行導入)
對壓縮包進行解壓
tar -zxvf jdk-7u80-linux-x64.tar.gz
刪除原來的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
命令驗證
五. 在Windows安裝運行Kafka
1. 安裝JAVA JDK
1碎节、下載安裝包
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
注意:根據(jù)32/64位操作系統(tǒng)下載對應的安裝包
2捧搞、添加系統(tǒng)變量:JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_144
2. 安裝Zookeeper
-
下載安裝包
解壓并進入ZooKeeper目錄,如:D:\Kafka\zookeeper-3.4.9\conf
將“zoo_sample.cfg”重命名為“zoo.cfg”
打開“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文件中修改默認的Zookeeper端口(默認端口2181)
打開新的cmd胎撇,輸入“zkServer“,運行Zookeeper
命令行提示如下:說明本地Zookeeper啟動成功
3. 安裝Kafka
1殖氏、 下載安裝包
http://kafka.apache.org/downloads
注意要下載二進制版本
2晚树、 解壓并進入Kafka目錄,筆者:D:\Kafka\kafka_2.12-0.11.0.0
3受葛、 進入config目錄找到文件server.properties并打開
4题涨、 找到并編輯log.dirs=D:\Kafka\kafka_2.12-0.11.0.0\kafka-logs
5、 找到并編輯zookeeper.connect=localhost:2181
6总滩、 Kafka會按照默認,在9092端口上運行巡雨,并連接zookeeper的默認端口:2181
7闰渔、 進入Kafka安裝目錄D:\Kafka\kafka_2.12-0.11.0.0,按下Shift+右鍵铐望,選擇“打開命令窗口”選項冈涧,打開命令行,輸入:
.\bin\windows\kafka-server-start.bat .\config\server.properties
或者
bin\kafka-server-start.sh config\server.properties
注意:注意:不要關了這個窗口正蛙,啟用Kafka前請確保ZooKeeper實例已經(jīng)準備好并開始運行
4. 測試
4.1 創(chuàng)建主題
在 D:\develop_tools\kafka\kafka_2.11-2.2.0\bin\windows
目錄督弓,打開新窗口,
創(chuàng)建一個名稱為 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
目錄愚隧,打開新窗口,輸入命令:
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
目錄锻全,打開新窗口狂塘,輸入命令:
kafka-console-producer.bat --broker-list localhost:9092 --topic test
4.4 創(chuàng)建消費者
在 D:\develop_tools\kafka\kafka_2.11-2.2.0\bin\windows
目錄录煤,打開新窗口,輸入命令:
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
4.5 數(shù)據(jù)測試
在 生產(chǎn)者 窗口輸入數(shù)據(jù)荞胡,在 消費者 接收到數(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 --查詢本用戶的表的列名等信息萝勤。