前言:
灌水机之所以这么猖狂,完全是因为程序的通用性造成的,如果每个站点的验证方式都不一样,那么它的末日也就到了。
以后,我会抽空给大家不定期发布一些方案。
众人拾柴火焰高,希望多多大家交流,将经验共享出来,我将比较好的方案粘到这里。
第一种:javascript 更改 FORMHASH 法。
原 理:
灌水机通过匹配 <input type="hidden" name="formhash" value="12345"> 标签中的value的值,来获取formhash的值,那么我们通过js来更改其值,那么它抓到的值就是一个壳而已,灵魂已经被javascript改掉 了。
一共两步。
第一步:
查找:templates/default/footer.htm
</body></html>复制代码
替换为:
<script>
for(var k in document.getElementsByName('formhash')) {
document.getElementsByName('formhash')[k].value="123";
}
</script>
</body></html>复制代码
第二步:
查找:include/global.func.php
function formhash() {复制代码
替换为:
function formhash() {
return '123';复制代码
补充说明:
这样改造过以后,除非灌水机也跟着改变算法,去匹配<script>中的值(这种可能性非常小,因为灌水机不可能针对某个论坛去改变它的算法,除非您的论坛它特别感兴趣),那么你可以将 document.getElementsByName('formhash')[k].value="123";
改为
document.getElementsByName('formhash')[k].value="1"+"2"+""+"3"+"";
或者
document.getElementsByName('formhash')[k].value=124-1;
或者
document.getElementsByName('formhash')[k].value=120+1+1+1+1;
等等,就是你这边随便一动,它就得累死。
除非。。。。。它将javascript分析引擎加上。。。
等它加上以后,我们还有会新的办法,等有朋友碰到了再说。
第二种:javascript 更改 FORMHASH 法加强版(针对带简单js引擎的灌水机)。
原 理:
如果灌水机带有简单的js引擎(比如将IE作为控件使用时),分析页面代码,并且执行其中的代码,那么,一般情况下,为了加快发帖效率,他会立即提交表单,在这里我们加一个setTimeout()延时,使它立即的提交表单的formhash为无效值。
第一步:
查找:templates/default/footer.htm
</body></html>复制代码
替换为:
<script>
function updatehash() {
for(var k in document.getElementsByName('formhash')) {
document.getElementsByName('formhash')[k].value="123";
}
}
setTimeout("updatehash()", 3000);
</script>
</body></html>复制代码
第二步同第一步:
查找:include/global.func.php
function formhash() {复制代码
替换为:
function formhash() {
return '123';复制代码
============== 未完待续 ==============
[
本帖最后由 heyond 于 2007-2-1 14:58 编辑 ]