看板 PHP 關於我們 聯絡資訊
※ 引述《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
roga:這也滿可行的..前半部就和論壇重設密碼方法差不多 ^_^ 09/24 07:26