应对恶意请求的一个可选方案

这是在开源中国上随手做的一个回答,突然有人回复,才又看到,是一年前的事情了,早已忘记。不过这个应对方案还是比较有意思的,至少个人感觉,所以转来备忘。毕竟在独立博客里看到的机会比在其它网站大一点,也就是一点而已

http://www.oschina.net/question/110098_89566

原问题是这样的:

分析了#开源中国#安卓客户端源码后,得到了安卓客户端登录接口的地址,试着用自己的账号验证了此接口。 随之发现一个问题:没有验证码之类的验证。然后用错误的信息不断重复刷新页面,并没有提示“请不要重复登录”之类的信息。 请问大侠是如何解决登录接口被暴力破解的问题的? 是在一定时间内对同一个IP请求此接口有限制吗? 还是有另外的高招。目前正在写相关的登录代码,恳请不吝赐教。

当时回复如下:

同ip同用户名(或同密码)连续错误超过阈值,继续响应,但永远返回登录失败,让爆破自己玩儿。同时邮件通知相关用户,提醒改高强度密码

关于“假定”

本文是一篇很久以前只写了个标题的文章。在草稿箱里放了几乎4年,最近整理博客看其更新时间为 2012年10月15日 @ 10:46,这么久都没有继续写,大概以后也不会续写了,直接发出来算了(2016-10-10 16:30)。

根据残存的记忆补记一下当时的初衷,应该是在沟通及web开发过程中,如开发人员做的一些假定,包括用户理解力、用户熟知程度、操作习惯等多种,程序运行过程中,对运行状态、输入数据、临时数据等做的假定,沟通过程中以自己的认知猜度别人,想当然的做一些假定;等等。这种种假定,有时可以简化工作量,提高效率,然而也会带来麻烦,比如程序健壮性差,无法满足实际需要,信息不对等、理解偏差、甚至沟通失败等等。当时有感于此等种种,想写一篇文章记述之,然而一直没有动笔。

回复:google与facebook的评述性文章

http://news.csdn.net/a/20110325/294648.html

 

yunpeng8800 2011-03-25 16:36:20

胡扯,社交网络和搜索有多大关系?谁会为了搜索一个问题,先去网站注册。总是一个替代一个,难道就没有共存吗,纯粹是赚稿费的文章

复评之如下

支持!
搜索是主动获得信息的有效途径,而社交网络则包含着更多的被动性。

---------------------------------------

有人回复:

gdufstww 2011-03-25 15:24:21

看来,IT这个产业,即容易诞生神话,也很容易让神话破灭。

复评之如下

这是表象,我们需要从中看到一点更深层次的东西。就像讲“天下大势合久必分分久必合”的样话的人,只做感性的慨叹,最多可以当诗人,但成不了思想家。

 

  • 这是表象,我们需要从中看到一点更深层次的东西。就像讲“天下大势合久必分分久必合”的样话的人,只做感性的慨叹,最多可以当诗人,但成不了思想家。

--------------------

wayto 2011-03-25 20:43:26

哈哈,看上面的评论就知道大多人对FACEBOOK的太不了解了,思维也是一条线状,对于FACEBOOK来说,GOOGLE只是一个应用,不过是其众多应用中的一个应用而已。

复评之如下

fengyqf 2011-03-27 00:04:21

是否也可以这样理解:对于google来说,facebook只是一个信息源,而且是半封闭的信息源?

wordpress文件附件转移到另外服务器上实现性能提升/web与文件数据分离

在大型web架构里,通常会把web与文件分离在不同服务器上,以提升web系统的高效运行。
而wordpress,本身好像没有这方面的考虑,所以,但可以朝这方面努力,应该可以通过插件等机制实现。
以下是笔者刚想到的一个实现方案。
由于wordpress本身,添加文章后,其中引用文件都是以绝对链接的形式写在html里的,这点可以通过插件的形式,把其url域名替换成另一个域名。
另一个域名下并没有这些相应的文件,可以通过url重写将对不存在文件的请求重写的一个动态处理程序(一般都是php,当然也可以使用其它,如jsp等)上,该处理程序通过远程http请求(或使用ftp也可以)把源站点下的相应文件抓取,并存在在对应的位置上,路径结构与源站点完全一致。这样,就实现了两个站点,即源站点及文件镜像站点的数据同步。第一次请求(即上述的抓取过程),请求后,再通过web程序把抓取到的文件读取并输出给客户端,即要模拟对静态web请求的返回数据,让请求浏览器以感觉不到这其实是动态请求的文件。
这只是一个技术方案,目前并没有实施,如有兴趣,可以自行实施,或者与笔者联系。笔者也可能在尝试实施这一方案的实施。

---
这里是一个方案,基本上就是上文中“插件”实现的功能 http://tsov.net/separation-of-the-blog-and-accessories/
当然,下面的远程自动抓取并没有提到,更没有实现的了

-------------- 2011-03-20 ------------------
周末,写了一个简单的代码,可以实现上述抓取功能,代码参看附件。其实这个“抓取”功能,应该通过apache的代理功能就可以实现,ngix等web服务器好像也有(个人对IIS还是有一定了解,没有这种功能~~xx的MS),但没有研究过。在学习php,所以使用php写一个相应功能的程序。对于使用虚拟主机的web站点,可以尝试一下。

讲一下可能参考的使用实例:使用比较小的虚拟主机、或者主机商对流量限制比较严酷,买了godaddy域名,就可获赠一个很大的虚拟主机,只是有广告。而广告只会附加到在html文档里,而对于图片、flash、音频视频是不可能带广告的,所以就可以把这些附件文件的“迁移”到godaddy虚拟主机上。使用这个方法,实际上只需要把文章内容里的文件地址修改到godaddy虚拟主机上,就可以了,不需要手工转移,自动化进行,省力。

代码并不完善,也没有使用说明,需要手工配置里面的代码。有兴趣的同学,可以自己看代码,当然前提是要有点php编程基础。这个代码将来可能会再做修改,请持续关注此文。http://www.path8.net/tn/archives/4217

源程序:点此下载源程序prx
2011-03-20

把一字符串通过javascript当作html代码运行为一个页面

把一字符串通过javascript当作html代码运行为一个页面。这里的字符串,可以通过javascript获取密文,并解密然后运行成为页面。可以通过这种方式完成简单的防监控作用。2010-10-10 21:45

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>runcode</title>
</head>

<body>
<script language="JavaScript" type="text/JavaScript">
//运行文本域代码
function runEx(cod1) {
 cod=document.all(cod1)
 var code=cod.value;
 if (code!=""){
 var newwin=window.open('','',''); //打开一个窗口并赋给变量newwin。
 newwin.opener = null // 防止代码对论谈页面修改
 newwin.document.write(code); //向这个打开的窗口中写入代码code,这样就实现了运行代码功能。
 newwin.document.close();
}
}
</script>
<textarea name="textarea" cols="60" rows="10" id="rn01"><font color="red">加入HTML代码</font></textarea>
<br><INPUT onclick="runEx('rn01')" type="button" value="运行代码" style="cursor:hand">&nbsp;&nbsp;[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
</body>
</html>