大家想想,信息群发软件,远程提交连注册用户,登陆,然后发信息,功能都有, session和验证有什么用?

解决方案 »

  1.   

    <?
    $servername=$HTTP_SERVER_VARS['SERVER_NAME'];
    $sub_from=$HTTP_SERVER_VARS["HTTP_REFERER"]; 
    $sub_len=strlen($servername);
    $checkfrom=substr($sub_from,7,$sub_len);
    if($checkfrom!=$servername){
    echo("数据来源有误!请从本站提交!");
    exit;
    }
    ?>
      

  2.   

    pswdf(小邪),看来你在这方面经验比较少,不要以为群发器有什么了不起的,他也要通过验证的才能发送信息的
      

  3.   

    to uuq(杜牧)
    "取得上一页提交地址。不是本机不允许。"
    这个好像可以用header那里欺骗的,不过我没真正试过,不知道有没有朋友指正
      

  4.   

    armi514(armi514)的思路还可以。session 是绝对不行的。而且也不可取。群发器真的比较烦,可绝对可以通过验证的。因为他把发送的信息全部保存了。
    每次要发的时候,只要点击一下发送就可以了。(虽然我们可以每只限制最多只能发一次)
    但是这样,他发一遍一遍的发也挺方便的。附:现在群发器可以自动注册用户,然后登陆,然后发垃圾信息一气呵成。 
    如果这个软件被很多人使用,结果大家可以可想而知了。
      

  5.   

    回复人: ice_berg16(寻梦的稻草人) ( ) 信誉:100  2004-04-29 22:41:00  得分:0 
     
     
      验证码是随机产生的,而且用图片生成,
    群发器不会有图片识别功能吧
    --------------------------------------------------------如果真要有心,想做的话,PHP可以实现图片的模式识别~~~
      

  6.   

    我在我写那个留言板里只是简单的使用了
    <?php
    if(isset($_SERVER["HTTP_REFERER"]))//针对部分浏览器可能无HTTP_REFERER, 所以做这么一个判断
    {
    $server_name = $_SERVER["SERVER_NAME"];
    $url = parse_url($_SERVER["HTTP_REFERER"]);
    if($url["host"]!=$server_name)
    {
    echo "<script language='javascript'>window.alert('表单提交错误,请勿使用任何外部程序提交表单!');window.opener=self;window.close();</script>";
    exit();
    }
    }
    ?>
    这样来防止外部提交~~~不过HTTP_REFERER是可以伪造的,防君子不防小人的方法~~~
      

  7.   

    使用SESSION或COOKIE记录上次发帖时间~~~
    然后每次比较当前时间和上次时间的差值,只有超过设置的差,才可发帖~~~
      

  8.   

    大家都说HTTP_REFERER可以伪造,能说说吗
      

  9.   

    to mikespook:
    每次都这样,那会不会拖慢服务器速度