1. 程式人生 > >$.ajax使用總結(二):偽造IP地址

$.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地址(當然也可以被偽造),才能避免被瀏覽器端的請求欺騙。

相關推薦

no