客户端伪造代理服务器ip进行sql注入

2024-06-09 10:18

本文主要是介绍客户端伪造代理服务器ip进行sql注入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前几天同事发现网站访问异常慢,经过排查,发现mysql亚历山大。果断查看日志,发现大量这样的查看

# Query_time: 5.019276  Lock_time: 0.000066 Rows_sent: 0  Rows_examined: 1
SET timestamp=1477759063;
update wa_search_record SET keyword_length= '9',s_count= '4916',s_time= '2016-10-30 00:37:35',split_txt= 'index.php',res_count= '2',cid= '0',pid= '0',s_type= '2',
ip= 'aaa' AND (SELECT * FROM (SELECT(SLEEP(5)))oASM) AND 'mZkt'='mZkt, 180.97.106.37',is_all= '2',weight= '4918' where id='52718';


仔细查看代码,发现红色部分是被注入的代码。

开始百思不得其解,这里的作用是保存ip地址,ip地址是服务器函数取的,怎么可能注入呢?

然后找到了这行代码:

$remote_addr=($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR'];

HTTP_X_FORWARDED_FOR 是当客户端通过代理服务器时的代理服务器增加的保存客户端的ip地址。如果通过代理服务器,REMOTE_ADDR将得到代理服务器ip,而HTTP_X_FORWARDED_FOR得到客户端ip。这样HTTP_X_FORWARDED_FOR值一定是代理服务器发送过来。只要客户端模拟代理服务器构造一个HTTP_X_FORWARDED_FOR就可以注入了。


解决方案1:

拒绝所有代理服务器访问。有点宁可错杀1000不可放过1个的感觉,不可取


解决方案2:

对$ip过滤,只保留ip地址格式的字符串。如果构造这个值并不为了注入,而是伪造ip地址,让你没法通过ip判断区域,会导致业务错误。实际也不可取。


解决方案3:

只使用REMOTE_ADDR,虽然可能不准,但没有安全问题




解决方案2:

只使用REMOTE_ADDR,虽然可能不准,但没有安全问题


这篇关于客户端伪造代理服务器ip进行sql注入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044901

相关文章

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地