【一次和黑客对抗的浮想】Http中几个不常见的地址请求头

这是我参与8月更文挑战的第六天,活动详情查看:8月更文挑战浏览器

HTTP 请求头中的 X-Forwarded-For及几个相关请求头

最近脑子抽风,总是想着和黑客们对抗一下。最近就想到一个问题,若是一个黑客恶意访问个人网站,我改怎么办?这还用说,照个人脾气,确定是找到他,搂他一顿!那么问题来了,怎么找到他呢?因而,我上网查资料,发现http中有这么几个请求头是有关访问地址记录的。服务器

remote_addrmarkdown

是最近一次代理服务器或者直接是客户端(中间不存在任何代理服务器的状况)的请求ip;其不能够伪造,由于TCP的创建是要通过三次握手的,若是伪造了源ip,就没法创建TCP,因此伪造remote_addr是一件没有意义的事情;post

X-Real-IP网站

这是一个自定义头,X-Real-Ip 一般被 HTTP 代理用来表示与它产生 TCP 链接的设备 IP,这个设备多是其余代理,也多是真正的请求端。须要注意的是,X-Real-Ip 目前并不属于任何标准,代理和 Web 应用之间能够约定用任何自定义头来传递这个信息spa

X-Forwarded-For(获取到的并不必定真实)插件

这是一个扩展头。这是惟一一个在拥有代理服务器的状况下,可以得到客户端ip地址的请求头。他的请求头格式为:代理

X-Forwarded-For:client,proxy1,proxy2
复制代码

例如,一个http请求到达服务器以前通过了三个代理,name最终服务器得到的信息以下:code

X-Forwarded-For:IP0,IP1,IP2
复制代码

最开始的ip0就是真实客户端请求地址,其次依次是离客户端最近的1,2号代理服务器。orm

那么,为何记录中没有最后一个代理服务器的ip呢?那就要从它的工做流程提及了!

在整个http请求过程当中,每一个服务器都记录了上一个服务器传递过来的信息,而后将上一个服务器信息追加到这个信息的后面,而且将这些消息传递给下一个服务器。以此类推,最后一个服务器只是将上一个服务器信息追加到以前全部代理服务器信息的后面,并无将本身的信息放入,而后直接发给服务器端了。这样就形成了整个请求头信息中,包含了http请求过程当中通过的全部代理服务器的信息,可是就是没有最后一个代理服务器的地址信息,若是咱们想要获取到最后一个服务器的信息,那么该怎么办?咱们就能够用remote_addr字段来获取(以上论述中的信息都是指该请求头中的信息)。

这么看来,X-Forwarded-For插件,而后就能够自定义本身的X-forward-For请求头ip了。因此,咱们最好仍是经过客户端本身带上ip来获取访问者ip。请求头中携带的ip地址能让咱们找到真正的访问者ip,其实否则,这个地址也是能够伪造的。好比,就能够在火狐浏览器中下载一个X-Forwarded-For插件,而后就能够自定义本身的X-forward-For请求头ip了。因此,咱们最好仍是经过客户端本身带上ip来获取访问者ip。因此这次和黑客的联想对战,我输了,仍是我太菜鸡了!!!

相关文章
相关标签/搜索