分享两个小问题

前言

  有好一段时间没有更新文章了,期间有好几次提起笔来。却又不知如何下手。那么,今天就来分享几个之前遇到的几个小问题。

(一) Linux上传文件后大小总是为0 kb大小

问题描述:无论是使用xftp工具,还是使用rz命令上传至Linux服务器中的文件大小总是为0。

导致原因 :
 经分析,由于系统磁盘被占满导致

可以通过命令 df -lh命令来查看系统情况。 如下所示:

1
2
3
4
5
[root@-tomcat01 ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 79G 79G 0G 100% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/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
2
3
4
5
6
7
8
9
10
11
12
13
14
public static String getRemoteAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}

return ip;
}

如果使用nginx作为代理服务器,通常建议在在nginx/conf下nginx.conf文件中对应的location路径下添加以下配置:

1
2
3
4
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

最后

   在上一篇文章中,我谈到了用户隐私。作为软件从业者,我们有义务,更有责任保护好用户的隐私数据。一些稍成规模的公司。一般都会有安全部门。对业务数据提出安全性的建议以及对用户数据安全做攻防。最近做的业务与安全联系的比较多。在这里就再啰嗦几句。就算抛砖引玉了。

对于用户敏感信息:

1
手机号,邮箱,登录密码,交易密码,身份证信息

等隐私数据均要以密文的形式落库。在业务层进行数据的加解密。

  1. 接口提供出来的隐私数据,均要进行混淆处理。

  2. 系统中关键路径中尽可能的记录用户信息。(如登录请求,记录用户ip地址等等)。


相关阅读:

1.《企业面试成本
2.《面试官初体验
3.《一份面试总结
4.《一个Java细节!


这里写图片描述

扫码关注,一起进步

个人博客: http://www.andyqian.com