分享兩個小問題!

本文首發於我的微信公衆號《andyqian》,期待你的關注!nginx

前言tomcat

  有好一段時間沒有更新文章了,期間有好幾回提筆。卻又不知,如何下手。今天來分享兩個常見的小問題。安全

(一) Linux上傳文件後大小老是爲0 kb大小

問題描述:不管是使用xftp工具,仍是使用rz命令上傳至Linux服務器中的文件大小老是爲0。服務器

致使緣由 :
 經分析,因爲系統磁盤被佔滿致使。微信

能夠經過命令df -lh命令來查看系統狀況。 以下所示:工具

 
  1. [root@-tomcat01 ~]# df -lhspa

  2. Filesystem      Size  Used Avail Use% Mounted on設計

  3. /dev/vda1        79G   79G   0G  100% /代理

  4. tmpfs           1.9G     0  1.9G   0% /dev/shm日誌

  5. /dev/vda3        16G   44M   15G   1% /home

其中:

  1. Size :表示該磁盤(掛載區)的總大小。

  2. Used :表示已使用大小。

  3. Avail: 表示剩餘可用大小。

  4. Use%:  表示磁盤使用率。

  5. Mounted on:表示掛載區,其中 / 表示根目錄

備註: 咱們能夠經過上述參數,來了解系統當前磁盤的使用狀況。

解決辦法:

  1. 刪除掉服務器中多餘的文件,釋放服務器資源。

  2. 若是服務器沒有多餘文件,能夠考慮增長磁盤空間。

(二) 獲取用戶真實IP地址

  咱們在設計系統時,有不少場景須要獲取到用戶的真實IP地址。其中部分業務還依賴用戶的真實IP地址。
包括但不限於如下場景::

  1. 記錄用戶登陸行爲。

  2. 在關鍵業務中,記錄用戶請求ip地址。

  3. 用戶短期內頻繁切換IP地址,須要進行安全驗證等等。

在單機應用時,咱們一般使用request.getRemoteAddr(); 方法就能獲取到用戶的真實ip地址。但使用負載,以及代理服務器時,咱們就應該使用下述方法進行獲取:

 
  1.  public static String getRemoteAddr(HttpServletRequest request) {

  2.    String ip = request.getHeader("x-forwarded-for");

  3.        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

  4.            ip = request.getHeader("Proxy-Client-IP");

  5.        }

  6.        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

  7.            ip = request.getHeader("WL-Proxy-Client-IP");

  8.        }

  9.        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

  10.           ip = request.getRemoteAddr();

  11.        }

  12.  
  13.        return ip;

  14.    }

若是使用nginx做爲代理服務器,一般建議在nginx/conf下nginx.conf文件中對應的location路徑下添加如下配置:

 
  1.    proxy_set_header Host $host;

  2.    proxy_set_header X-Real-IP $remote_addr;

  3.    proxy_set_header REMOTE-HOST $remote_addr;

  4.    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

最後

  在上一篇文章中,我談到了用戶隱私。做爲軟件從業者,咱們有義務,更有責任保護好用戶的隱私數據。一些稍成規模的公司。通常都會有安所有門。對業務數據提出安全性的建議以及對用戶數據安全作攻防。最近作的業務與安全聯繫的比較多。在這裏就再囉嗦幾句。就算拋磚引玉了。

  1. 對於用戶敏感信息:

手機號,郵箱,登陸密碼,交易密碼,身份證信息

等隱私數據均要以密文的形式落庫。在業務層進行數據的加解密。

  1. 接口提供出來的隱私數據,均要進行混淆處理。

  2. 系統中關鍵路徑中儘量的記錄用戶信息。(如登陸請求,記錄用戶ip地址等等)。

推薦閱讀:

談談用戶隱私

Git 經常使用命令以及常見錯誤

再談MySQL JSON數據類型

說說Java日誌

 

 

這裏寫圖片描述

掃碼關注,一塊兒進步

我的博客: http://www.andyqian.com

相關文章
相關標籤/搜索