网络安全之IP伪造
来源:互联网 发布:python interitems 编辑:程序博客网 时间:2024/05/22 02:30
目前很多网站的涉及存在一些安全漏洞,黑客容易使用ip伪造、session劫持、xss攻击、session注入等手段危害网站安全。在纪录片《互联网之子》(建议搞IT的都要看下)中,亚伦·斯沃茨(真实人物,神一般的存在)涉嫌利用麻省理工的网络,通过ip伪造从JSTOR中下载了150万篇论文。本文通过firefox看下一个简单的ip伪造是如何实现的。
1、客户端的ip是通过http的头部发送到服务器端的
比如,在打开网址www.baidu.com的时候,通过firebug可以看到请求头部,头部里包含客户端的信息,比如cookie等。
一般后台获取的客户端ip的代码为:
php代码:
private function _get_client_ip() {$ip = $_SERVER['REMOTE_ADDR'];if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {$ip = $_SERVER['HTTP_CLIENT_IP'];
jsp代码:
public String getIpAddr(HttpServletRequest request) { 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,这段程序会尝试检查 HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, 根据之前的原理说明,以 HTTP_开头的 header, 均属于客户端发送的内容。那么,如果客户端伪造 Client-Ip, X-Forward-For,不就可以欺骗此程序,达到“伪造 IP”之目的?
伪造这项值?如果你会写程序,并了解HTTP协议,直接伪造请求 header即可。或者使用 Firefox的 Moify Headers插件即可。
2、Modify Headers伪造ip
安装Modify Headers后,添加一个X-Forwarded-For,并填入一个ip,置为可用后,打开相应网页,服务器就会获取到该伪造ip。
3、网站如何防护ip伪造
既然可以通过ip伪造,网站如何过滤这些伪造的ip? 一般做法是在应用服务器上强制将X-Forwarded-For的值设置为客户端真实ip,具体操作请自行研究。
网络中存在此漏洞的网站很多,尤其是一些投票类的网站,通过限制ip(一个ip只能投一次票,或者一个ip只能在一定的时间段投一次票)来限制反复投票的网站。别人可能会利用此漏洞来伪造ip,突破这种限制。所以网站开发者要重视这类安全。
本文部分内容参考了博客构造HTTP请求Header 实现“伪造来源 IP” ,
- 网络安全之IP伪造
- 伪造ip
- 伪造IP
- 伪造IP
- 安全开发之IP地址伪造
- 伪造IP与伪造referer
- 伪造 X_FORWARDED_FOR IP
- 伪造IP访问URL
- php curl 伪造ip
- curl 伪造IP
- curl伪造IP
- 伪造ip包代码
- 伪造客户端IP实例
- 客户端IP地址伪造
- IP访问伪造
- curl伪造IP地址
- curl伪造IP和来路
- 伪造IP的一段代码
- 学习JVM:内存划分
- MATLAB R2014a / R2013a for Mac 打开帮助文档卡死问题
- C语言——第二章
- HDU 5023 A Corrupt Mayor's Performance Art 线段树 区间染色
- 未来五年程序员应当具备的十项技能
- 网络安全之IP伪造
- C语言可变参数函数的实现
- android setTag (int key, Object tag)抛出IllegalArgumentException的问题
- 在Java窗体表格中插入复选框
- iframe 动态链接
- vc/mfc 进程消息队列,线程消息队列,和系统消息队列,该如何处理
- 大摇大摆此次vbcvnccnxcb三个都是公司董事幸福的
- break跳出的是if还是for
- (int &)a