→ roga:這也滿可行的..前半部就和論壇重設密碼方法差不多 ^_^ 09/24 07:26
※ 引述《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