$.ajax使用總結(二):偽造IP地址
阿新 • • 發佈:2019-01-19
在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地址(當然也可以被偽造),才能避免被瀏覽器端的請求欺騙。