论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 1841阅读
  • 5回复

[求助-软件问题]MySQL Proxy(解决注入的另一思路) [复制链接]

上一主题 下一主题
 
发帖
*
今日发帖
最后登录
1970-01-01
只看楼主 倒序阅读 使用道具 楼主  发表于: 2008-07-25 12:20:06
What is MySQL Proxy?

MySQL Proxy is a simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication. Its flexibility allows for unlimited uses; common ones include: load balancing; failover; query analysis; query filtering and modification; and many more.

可以看到,MySQL Proxy的主要作用是用来做负载均衡,数据库读写分离的。但是需要注意的是,MySQL Proxy还有个强大的扩展功能就是支持Lua语言——魔兽也是使用了Lua来开发游戏,据我所知网易也是——可以参见云风的博客。这样一种扩展,就给了我让他做别的事情的思路——防止注入攻击。

启动MySQL Proxy的时候,加载一个Lua脚本,对每一个进入的query或者insert之类的语句做一次安全检查,甚至替换查询中的某些内容,这样在程序员的程序中忘记了过滤参数的情况下,还有最后一道防线可用。而且由于是Lua这样的动态脚本语言,在开发,修正,部署方面都会有极大的灵活性。当然,或许会担心性能方面的问题,那么在前面加memcached吧,或者干脆用c来写这样的扩展,毕竟MySQL Proxy是开源的,而且有清晰的接口。

MySQL Proxy提供给Lua的接口主要有以下几个函数:

connect_server() — 这个函数每次client连接的时候被调用,可以用这个函数来处理负载均衡,决定当前的请求发给那个后台的服务器,如果没有指定这个函数,那么就会采用简单的轮询机制。

read_handshake() — 这个函数在server返回初始握手信息时被调用,可以调用这个函数在验证信息发给服务器前进行额外的检查。

read_auth() — client发送验证信息给服务器的时候会调用这个函数。

read_auth_result() — 服务器验证信息返回后调用这个函数。

read_query() — 每次client发送查询请求函数的时候被调用,可以用这个函数进行查询语句的预处理,过滤掉非预期的查询等等,这个是最常用的函数。

read_query_result() — 查询结果返回是调用的函数,可以进行结果集处理。
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 沙发  发表于: 2008-07-25 12:20:20
可行性有待考察~~
离线暗夜精灵
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 板凳  发表于: 2008-07-25 16:40:19
貌似几个都是注入的 文章
你对注入感兴趣了??
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 地板  发表于: 2008-07-25 17:01:09
原帖由 暗夜精灵 于 2008-7-25 16:40 发表
貌似几个都是注入的 文章
你对注入感兴趣了??

正在学习中....好不容易有个假期,多学点东西
离线lmytrade
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 地下室  发表于: 2008-07-26 02:14:35
了解一点注入的皮毛,这些有待学习。
离线overcome
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 5 发表于: 2008-07-26 07:47:26
这是解决问题的一种好方法.有一定的专业性,值得认真学习的.