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() — 查询结果返回是调用的函数,可以进行结果集处理。
可以看到,自由发挥之后还是有很多其它的事情可以做的。不知道现在有没有公司这么做,或者说做过这方面的尝试。我只是写一个小思路,可行不可行, 等以后再去检验吧。最近牙疼的厉害,唉,小时候不注意,现在治疗保护都来不及了。以后有了自己的宝宝,我会吸取教训的,呵呵,与君共勉。
以上就是【MySQL Proxy(解决注入的另一思路)】的全部内容了,欢迎留言评论进行交流!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容