关于JS加密解密那点事

最近和ucd部分的前端开发有合作,可曾想他们发过来组件什么的都是加密处理过的,事实上组件又不完善,很多小的bug都要给他们定位,很是头疼,果断解密看看。

很多朋友以为JS的加密是不可逆的,其实常见的eval加密也谈不上是加密,只能算是一种编码(Encode)或者也可以成为是一种打包(packer),类似于base64这样的编码,都是可以以一定方式还原的,当然也就是“解密”了。

仔细观察加密JS,你会发现,大部分文件里面都有function(p,a,c,k,e,r)或者是function(p,a,c,k,e,d),据说这样的pack方式是dean edwards提出的,你可以访问其个人主页以获取这方面的最新信息。后来还有一些编码打包方式也是eval开头,但是特征字符串p,a,c,k,e,r(d)改变了,我们姑且称为是这种打包方式的一个变种吧,其实解码很简单,我们回顾一下JavaScript脚本中eval含义及用法。 查看更多...

坑爹的服务商

话说昨天打开博客(确切的说是打不开),发现访问不了了(由于最近忙,前一段VPS故障,博客移回之前一直用的hostnine的虚拟主机),以为又是例行宕机,等了一段时间还是不行,查看邮件才发现已经宕机一天了(可见我最近有多忙,一天之前的邮件,硬是没看到)。

感觉事情不妙,立即去联系服务商,等了半个小时被告知,因为我的主域被Google查出有恶意软件(以前注册主机的时候使用的域名,由于h9后台cPanel不能随意更改主域,且主域是朋友公司的域名,就没去找客服更改)。纠结开始,把事情前因后果给客服讲完,客服还是不给我整好,非得让我清理网站上的恶意程序。无语扯了半天已经凌晨(谁叫老外那边是白天吶),困意来袭,睡了,打算今天继续解决,早上收到邮件居然说,之前给我的回复都是因为他们没搞清事情的原因,原来我原先所在服务器是xxx11,现在切换到xxx31了,他们还说之前有发邮件通告。 查看更多...

XSS攻击的原理

近来又在论坛看到有xss的通知,由于概念模糊,就扫下盲,顺便转些东西过来了。

概念说明

Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意html标签或者javascript代码,当用户浏览该页或者进行某些操作时,攻击者利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。
比如:攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookie中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点。
诸如此类,唯一能完全杜绝xss攻击的方法,就是禁用script,img等,显然这是不靠谱的,用户需要丰富的页面内容;当然我们可以用一些方法预防xss攻击,尽量减少xss造成的危害。

XSS攻击的危害包括 查看更多...

真假EasyRecovery识别

话题起因:上个月电脑误格式化,尝试多种恢复软件无果,重装系统后抱着试试看的态度,找到众所周知的EasyRecovery,却发现现在网上流传的该软件,多数为国内同名软件,实际使用时既收费又不好用。

知识普及:真的EasyRecovery 是世界著名数据恢复公司 Ontrack 的技术杰作。它是一个硬盘数据恢复工具,能够帮你恢复丢失的数据以及重建文件系统。其 Professioanl (专业) 版更是囊括了磁盘诊断、数据恢复、文件修复、E-mail 修复等全部 4 大类目19 个项目的各种数据文件修复和磁盘诊断方案。假的EasyRecovery,都是最近一两年出来的。本人前几年用过,很好用但近期出现很多3M大小的假数据恢复,要钱还不好使。特此提醒,小于10M的EasyRecovery都是假的。 查看更多...

MySQL数据损坏问题及修复

28号还在博客发了些牢骚,前天又忙于工作没有继续我工作两年来坚持的每月两篇文章,昨天想填补一下这个月的空白,发一下帝都出差感想,没想到发现博客又出现数据库连接错误。

说到这里不得不再牢骚几句,最近博客所使用的oneman vps真心不给力啊,经常宕机,经常数据库连接错误。这回也不例外,本以为像之前一样直接重启ok了。谁知道启动后还是不行,看来手机是玩不成了,打开电脑开始调试,因为之前所述缘故,电脑上没有什么工具之类的,都要下载,随后连上vps逐步排查,发现居然是数据文件损坏,按照常理,REPAIR TABLE TABLE_NAME修复完,数据没问题了,重启服务就好了。

实际上,我操作之后还是不行,找了些类似案例,发现是安全模式惹的祸,还有什么lock,什么mysql.sock丢失之类的问题。 查看更多...

生活没有Ctrl+Z

话说19号都想吐槽一下心中不快了,可惜一直没有来得及。今天无聊,更新一下许久没动静的博客,同时再吐槽一下近期状况。

近来很是不爽,话说回来,还是得追溯到4月18的Ubuntu新版发布,也就是上上个周五,下班回家满心欢喜点了在线更新,结果有点小问题,重装后可以了,又装了几个软件,然后重启完又有问题了,想再重装,之前都是自己选分区,格式化,这次手贱看到提示已经有Ubuntu14.04,是否卸载重装,结果点了,谁知道给我全盘格式化了,装了一半感觉不对就强关了,再看硬盘什么都没有了,我的一个T的硬盘啊郁闷,真想抽自己,原装戴尔的镜像我还一直没舍得删,这下可好,整个GPT分区完全没了,别说镜像了,我保留多年的文件都没了,我去,真是难受,按照网友的说法,一瞬间文件全没了,会有想死的心滴。

如果生活可以还原该多好啊,敲上一组Ctrl+Z,一切恢复原样。 查看更多...

深圳,暴雨,小记

今天早上8点多,突降暴雨
sz_rainstorm1
公交车进水了 查看更多...

使用Spring的getHibernateTemplate()进行批处理(JDBC兼容方案)

一直很抵触hibernate,原因不多说,总知是能不用就不用。最近项目有大量数据导入的需求,一直出现连续导入10w左右就内存溢出之类的情况,开启事物,分页flush session还是挺慢,换对象为SQL,拼装语句块直接执行效果也不理想。看到网上说的使用传统批处理速度要高10倍左右,于是试了试,还算可以。

由于项目其他地方有采用hibernate,甚至还用了iBATIS,不能随意更换框架或者改动接口。

网上很多采用sessionFactory.connection();获取Connection的文章,用过的朋友可能就知道,这个方法在Hibernate3.3.2版本中已被弃用。
替代方法:SessionFactoryUtils.getDataSource(sessionFactory).getConnection();
也可以直接使用:((SessionFactoryImplementor)sessionFactory).getConnectionProvider().getConnection();

获取到Connection后就好说了,做法完全是传统Jdbc的。通过这个方法单独实现一个大批量插入的接口也不是什么难事了,这里不再赘述。

Oracle中varchar2(* char)与varchar2(*)的区别

最近用到Hibernate自动建表,在用到String的时候,默认会创建varchar2类型字段,如:设置length=10,则创建后字段属性为varchar2(10 char),而非varchar2(10)。

由于之前没留意到这个,就网上查了一下,才知道原来基础都没记牢(也许一开始就没接触到,至少印象中一直使用的后者)。其实,这个这两种写法还真有点不一样之处,varchar2(10 char)表示10个字符,这个类型可以存储10个多字节字符的,如如10个汉字,而varchar2(10)实际上市varchar2(10 byte)的简写,表示两个字节,注意,前者是字符,这里是字节,就是说这个类型是不能存储10个多字节字符的。

偶然发现,总结下,以备忘。玩数据库比较少,熟手勿拍!

两种方式清除Ubuntu多余启动项

昨天看到Ubuntu有不少更新(有一段时间没有用了),就升级了下,事后发现有升级内核,导致引导项有两个,强迫症泛滥的时代,绝对是受不了的。所以还是手动清理下吧。

因为Ubuntu是由grub引导启动的。每当Ubuntu升级到新的版本后,grub会自动调整开机启动菜单的顺序,把新的内核放在启动菜单的开始,但不会删除旧的内核版本。这样,当Ubuntu的升级次数一多,启动菜单中将变得非常臃肿。而且那些旧版本的内核基本不会用,不如删除之。通常的解决方案如下

1.找出系统已经安装的内核版本,在终端里输入命令:

dpkg --get-selections | grep linux-image 查看更多...