作者dinos (守护神)
看板PHP
标题Re: [闲聊] 线上使用者的作法..
时间Mon Sep 24 03:06:25 2007
※ 引述《dinos (守护神)》之铭言:
: ※ 引述《roga (凝视)》之铭言:
: : 小弟的上个问题是为了最近写的一个小玩具 ( http://stat.lab3.tw/ )
: : 不过现在又遇到了瓶颈,主要问题是在於「密码重设」的部份。
: : 现在的密码重设方法是读取远端特定网页,如果该网页标题有含指定的字串,
: 密码重设
: 为啥需要去抓远端网页标题?
: : 就当作通过认证,并且可以修改密码。
: : 我用的方法是
: : $encode_string = '<title>' . $encode_string;
: : ^^^^^^^ 加上这个是为了防止被乱田在网页的其他地方
: : $long_string = file_get_contents(urldecode($url));
: : if(eregi($match_string ,$long_string)) { 开始做事 }
: : 但是这似乎有危险,我担心如果有人留下含有 $encode_string 的 comment
: : 这样或许可能会出现问题,尽管机率不高。
: : 想请问各位长辈,是否有更好的建议?
: : 或是在比对字串的时候,有无更有效率的方法 @_@
: : 还有,用 file_get_contents 操作,必须把 php.ini 里面的选项打开 (预设
: : 好像就是开的),我在想有没有比较简单好用 (最好是 native) 的方法,
: : 可以取得远端网页的内容,然後只取前面的一些 bytes ,这样或许可以降低
: : 误判的机率 (因为 Title 都在网页最前面几行,估计 30 行以内)
: function getRemoteTitle($url){
: $fr=@fopen($url,"r");
: if(!$fr)return false;
: $content='';
: while(($line=fgets($fr))!=false){
: content.=trim($line);
: if(preg_match('/<title\s*>[^<]*<\/title>/i',$line) ||
: strstr(strtolower($line),'</title>')){
: break;
: }
: }
: fclose($fr);
: preg_match('/<title\s*>[^<]*<\/title>/i',$content,$matches);
: if(isset($matches[0][1]))return $matches[0][1];
: else return false;
: }
: : 另外我想请教,在 Apache 中,
: : MaxClients
: : 语法:MaxClients <数量>
: : 预设:MaxClients 150
: : MaxClients 用於设定同时能够提供给使用者的最大服务请求数目。
: : ==
: : MaxClients 和 MaxKeepAliveRequests 这两者有何不同?
: MaxClients
: 伺服器启动时要启动多少个 httpd 来等待连接
: 在 apache2 预设值里,每多一个大约会多使用 20~40MB
: 对於同时连线人数越多的站是开越多越好
: MaxKeepAliveRequests
: 只有在 KeepAlive On 时才有效
: KeepAlive 是说在一个 httpd 每处理完一个 MaxRequestsPerChild 後要不要继
: 续等待下一个子请求,所以 MaxKeepAliveRequests 就是指定每个 httpd 在等
: 待期间可以处理多少个子请求
: : MaxClients 是指对 Unique IP 而言吗?
: : MaxKeepAliveRequests 是同一个 IP 所能发出的 Request 吗?
: : 感谢。
: : ==
: : 另外
: : MinSpareServers 5
: : -> 设定最少闲置等待服务的伺服程序数量
: : MaxSpareServers 10
: : -> 最大
: : 这些是 fork 出来的 child 吧?
: : 请问这个数字对效能有没有影响?
: : 以及这个数字会不会影响到 Server 启动数量的最大数量呢?
: 这两个是指备用的 httpd 数量,也就是除了被用掉的以外还要开启多少个
: 当然一定会影响效能罗
: 对於载入多个 mod 的 apache httpd 而言,每要启动一个 httpd 是要花上很多
: 时间(约莫 3~8 seconds),所以设置一些备用的减少当使用者连结上时需要等待
: httpd 启动的时间
: : ==
: : 以及对於 DDoS 有没有办法从 Apache 来防止..
: mod_evasive
:
:
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc)
: ◆ From: 140.113.158.15
: 推 roga:谢谢学长 ^^ ~因为注册的时候,只要帐号密码.其他资讯都没有 09/23 10:52
: → roga:所以..才会要求填在标题..以证明网站是属於对方的~~ 09/23 10:54
: → dinos:REFER 09/23 20:03
: 推 bcse:Referer 可以变造,附带一提,Google Sitemaps 和 Yahoo! 09/23 20:50
: → bcse:Explorer 是采用要求使用者新增一个 <meta/> 来辨识 09/23 20:52
: 推 roga:楼上我知道,但是 blog 的用很难增加一个 meta tag XDDD 09/24 00:41
随手想想...
既然使用者都可以自己加 <img <a <script css 了
那 url 上多个 ?check=**** 也 ok 吧
**** 就是使用者申请时,以他的
网址+一组乱数产生的 hash
当连线过来时,就抓网址+资料库记录的乱数去比对
然後请使用者指定他的一篇文章
再请使用者修改本文加上一串指定的字串,抓回来比对 strip 後的长度
然後再一次把那一串指定的字串砍掉,一样比对长度,以及第一次抓文章时的长度
//如果有人捣乱还做到第三次抓到和第一次抓到的文章会一样,那只好投降
strip 是指清掉
注解、成对的 <a></a>, <script></script>, <style></style>, <title></title>,
<select></select> 及 strip_tags
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.158.15
1F:→ roga:这也满可行的..前半部就和论坛重设密码方法差不多 ^_^ 09/24 07:26