分享两个小问题!

本文首发于我的微信公众号《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

相关文章
相关标签/搜索