降低SQL注入带来的危害

参考 记一次标准化SQL注入 的流程,再次注入了 某网站, 同时也证明程序的漏洞确实无处不在,所以作为用户千万别把什么都搁网上.作为开发者必须对自己的代码更加负责,尽可能减少被攻击的可能性以及受到攻击后将可能的危害设在一个可控的范围内,否则,很可能造成非常严重的损失. 大部分程序员对自己写的代码非常有信心,认为自己编写的代码是非常严谨的而对其他方面的安全性问题放松了警惕,这往往是最危险的做法.其实,如果稍微做一点工作,即使出现漏洞,大部分攻击也很难对程序(或网站)造成实质性的破坏,以下是目前想到的一些简单的防范措施,经供参考: 对不同的项目配置独立的数据库权限,避免因为某一个网站的漏洞而造成大面积的跨库攻击.同时,也不要给项目数据库用户提供mysql, infomation_schema 等系统级数据库的权限,避免攻击者很容易就得到数据库的结构信息. 数据表的命名不要过于常规,如 user 等,实在是太容易被猜到了. 关闭各种报错信息,可以有效提高攻击的难度,如果不是有目的的攻击者,遇到只能盲注的一般也就放弃了. 到现在还有大量的开发者认为MD5是安全的加密方式, google一下,做各种 Hash型密码破解 的网站真的是越来越牛逼,8位以下的数字密码不用付费都给你了, 作为被攻击并被爆表后,网站的最后一道防线,请重视一点,至少不要使用太常规的加密方式,不然真的没办法了.…

绝育记

又是新的一天,但今天好像有些不同? 打针好疼~ 怎么有点晕,听说有可怕的事要发生(⊙_⊙) 康复中的托尼.伊丽莎白 (伊丽莎白圈可以避免因宠物舔舐伤口而引发感染) 后记 在大大小小的宠物BBS中,关于是否应该给宠物实施绝育的争论一直都存在.科学的绝育可以避免宠物在发情期可能出现的行为失控(离家出走),降低(雄性)宠物的攻击性以及延长宠物的寿命.也有很多人提出这种残忍的手术实在是太不人道,用这种方式剥夺了他们繁衍后代的权利似乎过于蛮横. 其实到现在我也不敢肯定我是否做了一个对所有人(包括Tony)都最好的决定.我在想,对于一只没有生育计划的宠物狗来说,一个更放松的家庭氛围和更健康的晚年生活相较于一个永远无法行使权利,或许来的更加实惠一些? 除开对宠物本身的考虑,那些计划外小生命也许同样值得我们思考.我是Tony的第三(也许是第四)任主人,不断变化的生活环境造成的后果是小狗的胆小敏感的性格和对人的不信任.要为一只杂交小狗找一个靠谱的收养人确实不是一件那么容易的事,其实既便是纯种犬有时也会被主人遗弃.没有人收养的小狗可能只能生活在城市垃圾中,或者是被捉去做成红烧狗肉.与他们相比,Tony也许要稍微幸运一些? 现在Tony已经基本康复,没有术后感染等问题.还有一点非常庆幸的是,Tony还是和以前一样活泼开朗(也许应该叫过于开朗),没有出现之前担心的,性格可能会变的消沉、内向等.就是手术后的当天估计麻药劲还没过去,回家就尿了两次床,洗被子把我累得够呛,也算Tony是给我一点惩罚(哈哈)…

Linux终端实践: zsh+tmux+vim

zsh : 一个非常棒的shell,丰富样式主题,强大的插件支持,可以实现各种厉害的功能.完全有理由替代bash. Tmux : 如果你用过Screen的话,那么可以考虑用Tmux代替Screen了. Vim : 彪悍的编辑器不需要解释. 我的配置 : $ git clone git@github.com:chxj1992/myConfig.git $ cd myConfig/ ZSH ? $ sudo apt-get install zsh 安装 oh-my-zsh $ wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh $ chsh -s which zsh $ cp -f .zshrc…

博客迁移到阿里云

毕业以后不可以再借用之前的学校的服务器了,好伤心啊... 目前已迁移到阿里云,目测还不错! 虽然是最低配置,跑个博客还是绰绰有余了 O(∩_∩)O~…

记一次标准化SQL注入

以下是对某网站一次教科书式的SQL注入攻击,因为该类漏洞大量存在于比较陈旧的网站中,具有很强的可复制性,写下来仅供参考. 注入点 同一个服务器上可能部署了多个网站,甚至是已经废弃但是还没有被关闭的旧版网站,新开发的网站一般都会使用一些开发框架或者是基于开源系统的二次开发,存在严重漏洞的机会相对较小,而攻击就可以从那些老旧的网站入手. http://www.xxxxx.edu.cn/xxxx/team_intro.php?id=41' 这是老版网站中的一个注入点,加 ' 注入,直接爆出表名. 有效信息: 表名 : ee_team_intro 获取字段数 因为使用UNION SELECT查询时,要求被拼接的两张表的字段数必须相等,所以需要首先知道当前表的字段数量,以及字段与页面数据的对应关系. url_decode %23 = # ,作用是注释掉之后的SQL语句. http://www.xxxxx.edu.cn/2011/xxxxx/team_intro.…

PHP图像识别 php-tesseract

在做一些网络爬虫工具的时候,经常需要把图片信息转化成文本数据(比如电商网站相互之间比价,而价格往往是图片格式)。网上关于PHP图像识别的文章不少,不过质量都不怎么样,好的工具包更是寥寥无几。好不容易找到一个优秀的PHP图片识别扩展,和大家分享一下。 首先安装依赖程序: sudo apt-get install python-distutils-extra tesseract-ocr tesseract-ocr-eng libtesseract-dev libleptonica-dev php5-dev swig libcv-dev build-essential subversion 编译安装 php-tesseract: svn checkout http://php-tesseract.googlecode.com/svn/trunk/ php-tesseract cd php-tesseract ./configure --prefix=/usr make sudo make install make test 这里有一个官方提供的例子: wget http://php-tesseract.googlecode.…

PHP socket 编程: select同步非阻塞多路复用模式

听了凌总培训的socket之后,认识到socket编程虽然平时应用的不多(特别是PHP的socket编程,基本上没什么应用),但确实是非常重要的一块知识,我等泥腿子程序员务必要好好学习,千万不可舍本逐末、急功近利,捡了芝麻丢西瓜$_$。。。 因为在socket编程方面没什么基础,所以只是简单的看了一下PHP的socket,加深对socket的认识。PHP socket是基于BSD的socket接口实现的,所以如果想更深入的学习可以直接研究一下UNIX编程,这里不再赘述。 php作为一个效率一般的单线程语言,用来做socket服务器确实有点勉强,不过php还是提供了各种相关函数,使其可以完整地实现socket编程的各项功能。 // Create a new socket $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $server['host'] = '127.0.0.1'; $server['port'] = '2013'; socket_bind($socket,$server['host'],$server['port']); socket_…

Symfony PHP Framework

Symfony是一个很优秀的PHP开发框架,其大量参考了 J2EE 的架构模式(和Spring十分类似),非常适合大型项目的开发.什么,你了解J2EE?那么恭喜你,你已经成功了一半! 优势: 强大的命令行脚手架工具(也有GUI工具),协助你快速完成大量的初期项目搭建工作. Java bean式的依赖注入管理,向高耦合说再见. 完全自定义的路由管理,支持配置文件或者注释配置的方式. 完全模块化的设计,如果你愿意,框架的各个部分都可以换成你喜欢的库. 模板文件对布局,继承有良好的支持,据说用起来相当不错. 非常齐全的手册,Cookbook 等 统统都是免费的 ... 有兴趣? 那么现在就开始吧: Symfony Get Started…

使用 localStorage 储存本地数据

做数据分析工具的时有一些数据需要存在本地,如在处理数据的过程中,需要把每一步的条件保存起来以便可以进行撤销操作。 通常,数据库和COOKIE是比较常见的储存数据的方式。不过,COOKIE只能保存4k的大小并且把大量垃圾数据加在报头里也不太好。而这种临时有效的数据也不太适合保存在数据库中。和存在数据库中相比,这类数据更适合保存在客户端,浏览器的localStorage正好可以用来完成这项任务。 localStorage对象提供了数据操作的基本方法,最常用的:setItem(), getItem(), removeItem(), clear()。借助这四个方法可以简单的完成对localStorage的操作。 保存数据到localStorage中: var sql = $("#sql").val(); localStorage.setItem('sql'+key,[sql]); 读取,删除localStorage的数据: var sql = localStorage.getItem('sql'+key); localStorage.removeItem('sql'+key); clear() 方法则会清除localStorage中的全部数据。 localStorage在客户端提供了一个简单的本地存储,使很多临时性的数据都可以在前端保存,为Web开发带来了极大的便利。 Mysql数据分析工具 演示站: http:…

google Charts 本地化部署

之前做过一个数据分析工具,需求之一是要根据统计出的数据生成图表,考虑了Raphael,Bootstrap Chart.js 和google Charts 三个JS库,最终选定google Charts,原因是Raphel学习成本太高而Bootsrap Chart.js的功能上明显无法满足需求.google Charts部署的方式很简单. <script type="text/javascript" src="https://www.google.com/jsapi"></script> 问题来了,google Charts需要通过访问google API导入依赖,但是国内访问谷歌服务器稳定性不敢恭维,于是决定把google Charts直接部署到本地。 Google没有提供直接部署在本地的方案,不过毕竟是JS,可以直接从浏览器中获取。不过需要稍微研究了一下google Charts加载依赖的工作方式。 打开控制台,发现Google Charts首先加载了一个叫googleapi.…