使用火狐浏览器安装Modify Headers插件,使用如下图添加好后,点击Start,就可以模拟伪装IP。在Value中可以做一些注入(自由发挥)
防御:从Nginx层次,重新配置conf文件
server { listen 80 default; server_name _; location / { proxy_pass http://127.0.0.1:8082/wenwen-blog/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;以前的配置 proxy_set_header X-Forwarded-For $remote_addr;#现在直接配置获取真实客户端IP index index.html; } }代码后台同样需要优化,获取IP需要判断IP的有效性,代码如下:
package org.jiucheng.util; import java.util.regex.Matcher; import java.util.regex.Pattern; public class IpUtil { private static final long[] MASK = {0xFF000000,0x00FF0000,0x0000FF00,0x000000FF}; private static final Pattern PATTERN = Pattern.compile("(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}"); public static boolean isIp(String ip) { if(ObjectUtil.isNull(ip)) { return false; } Matcher matcher = PATTERN.matcher(ip); return matcher.matches(); } public static boolean isIp(Long ip) { if(ObjectUtil.isNull(ip) || ip.compareTo(Long.valueOf(0L)) < 0 || ip.compareTo(Long.valueOf(4294967295L)) > 0) { return false; } return true; } public static Long toLong(String ip) { if(!isIp(ip)) { return ObjectUtil.getNull(); } String[] is = ip.split("\\."); long rs = 0L; for(int i = 0, len = is.length; i < len; i ++) { rs += Math.pow(256,(len - i - 1)) * Long.valueOf(is[i]); } return rs; } public static String frLong(Long ip) { if(!isIp(ip)) { return ObjectUtil.getNull(); } StringBuilder sb = new StringBuilder(); for(int i = 0,len = MASK.length; i < len; i ++) { sb.append(Long.toString((ip & MASK[i]) >> (len - i - 1) * 8)).append("."); } return sb.substring(0, sb.length() - 1); } }
测试伪装IP是否能预防。
我来试试 哈哈
@Mrxn 欢迎,有时间帮做个全站检测。
沈吉祥的博客,换了域名,麻烦更新下http://blog.wexinqq.com/ ,谢谢
@www 已更正!
来支持一下,欢迎回访哦!
@小小蚂蚁博客 谢谢来访,以后常来!你的博客不错。