跳到主要內容

發表文章

Windows使用Apache/WIN-ACME申請免費Let's Encrypt的SSL憑證

  在Windows下使用Apache架站時,申請Let's Encrypt的SSL憑證的步驟: 1.確認web的port 80可以連線 有http自動轉https的話要關掉 2.下載win-acme https://www.win-acme.com/ 解壓縮後執行wacs.exe(可能要管理員權限) 3.wacs.exe操作如下 選m 選2 輸入網址(不用加https) 選4 選1 輸入網站根目錄位置 選2 選2 輸入存檔SSL憑證的位置 選1 選5 選3 之後enter按到底,會開始自動申請憑證,申請成功後按q離開wacs.exe 4.修改http-ssl.conf 加入或修改下面三行 SSLCertificateFile "SSL憑證存檔位置/網站名稱-crt.pem" SSLCertificateKeyFile "SSL憑證存檔位置/網站名稱-key.pem" SSLCertificateChainFile "SSL憑證存檔位置/網站名稱-chain.pem" 5.重啟apache 6.自動更新憑證 寫一個bat,加到工作排程 cd C:/win-acme(就是解壓縮win-acme的地方) wacs.exe --renew --force net stop Apache2.4 && net start Apache2.4
最近的文章

網站弱點掃描幾個問題

 1.盲目的LDAP注入 主要是特殊符號的關係,前後台的輸入都要過濾掉下面文字: = > < | & ! \\ * ( ) \x00 %29 %7C %28 %3D 不過經過多次的測試,這項弱點多是誤判,例如在「有傳入值印出B,不然印出C」的情況下,假如傳入的值經過篩選後變成空值,卻還是印出C,很容易就會造成誤判。 因此如果已經篩選掉上面的文字了,卻還是不能過關,很有可能程式的流程也要修改,盡量避免無傳入值還是會印出資料的狀況。假如一定要這樣寫的話,就要檢查傳入值的存在(isset),不要用有無(empty)。 2.低強度密碼組合 - ROBOT攻擊:伺服器支援有漏洞的密碼組合 在httpd.conf中加入下面三行: SSLProtocol all -SSLv2 -SSLv3 SSLHonorCipherOrder off SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 3.查詢中的Password參數 GET、POST不能使用「word」「author」等關鍵字。

主機標頭注入的測試與應對

最近處理「主機標頭注入」弱點,花了很大力氣,總算告一段落,把相關資料筆記起來。 1.主機標頭注入是啥 弱點掃描的描述永遠是上個世紀的翻譯軟體做的,有時候寧願顯示英文orz 簡單的說就是在開啟網頁時,另外輸入header資訊,導致網站發生錯誤。 2.如何測試主機標頭注入 以PHP來說,$_SERVER['HTTP_HOST']可以取得host資料,範例如下 執行起來會是下面狀況 會把IP或網址印出來,主機標頭注入就是把HOST改掉,測試方式要使用curl。 windows版請到這裡下載:https://curl.se/download.html 下載後解壓縮,進入curl.exe所在的資料夾,開啟終端機,輸入下面指令 塗掉的地方就是網站的IP或網址,這時候可以發現$_SERVER['HTTP_HOST']的資訊被改掉了,印出的是輸入的測試資料「www.123.com」。 3.如何防範主機標頭注入 這個問題在網路上找了很久,各家方法都有,但最簡單的是改.htaccess檔,加入這幾行: RewriteEngine On  RewriteCond %{HTTP_HOST} !^ 網址或IP [NC] RewriteCond %{REQUEST_URI} !^/error [NC] RewriteRule ^.(.*) - [L,F] 這時再用curl測試,跑出來的就是403了,解決。

Google 分析 (Google Analytics) 造成的「加密的階段作業 (SSL) Cookie 中遺漏安全屬性」

 Google 分析 (Google Analytics) 的cookies會造成「加密的階段作業 (SSL) Cookie 中遺漏安全屬性」的弱點,網路上有一種解決方式,在gtag中加上參數,如下: gtag('config', 'G-XXXXXXXXXX', {'cookieFlags': 'SameSite=Strict; Secure'}); 但我的系統卻無法使用,研究了一下,要拆開寫,如下   gtag('set', 'cookie_flags', 'SameSite=Strict;Secure');   gtag('config', 'G-XXXXXXXXXX'); 要拆成兩行,Secure就可以用了。 但更簡單的方法是在httpd.conf中加入這一行 Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure;SameSite=Strict 解決。

Sphinx 3 設定

Sphinx是歷史悠久的php全文搜尋引擎,最近把舊的系統換成Sphinx,隨便記一點東西,以防忘記。 1.安裝及相關說明 參考 https://blog.csdn.net/XBODHX/article/details/107378182 mysql的設定方式,上面網站說得很詳細了。 改路徑及DB設定即可。 2.XML資料源 要在Sphinx使用XML當作資料,要先把XML按照下面格式整理 http://sphinxsearch.com/docs/current/xmlpipe2.html sphinx.conf設定如下 source (索引名稱) {     type  = xmlpipe2     xmlpipe_command = cat (xml檔案所在路徑)     xmlpipe_field = (subject)     xmlpipe_field = (content 預設是這兩個文字欄位,可以按XML內容修改)     xmlpipe_attr_uint = (要另外存的欄位,限數字)     xmlpipe_fixup_utf8 = 1 } index (自訂索引名稱,跟上面的不一樣) {     source = (索引名稱)     path = (索引檔路徑)     mlock = 0     morphology = none     min_word_len = 1     ngram_len = 1(是否分詞,1是,0否)     ngram_chars = (分詞的字碼,ngram_len = 0的話無用)     html_strip = 0(是否刪除html tags,0不刪,1刪除) } 其餘的跟mysql一樣,要注意windows底下可能沒有「cat」可以用(在xmlpipe_command 那邊),把cat改成type即可。 3.searchd 設定 如果設定的sphinx.conf有改名,或者indexer的參數不是sphinx.con...

Apache log顯示來源hostname

 Apache的log檔案,紀錄的是所有進入網頁伺服器的訊息,一般如下: 127.0.0.1 - - [28/Jul/2006:10:22:04 -0300] GET / HTTP/1.0 200 2216 格式內容就不多說了,第一個資訊就是連入的IP,但最近遇到的問題是原本IP的地方,突然變成了hostname,如下 ec2-52-53-242-144.us-west-1.compute.amazonaws.com - - [30/Nov/2017:20:26:47 -0500] "OPTIONS / HTTP/1.1" 339 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36" 研究了很久,甚至更新apache版本,都還是一樣,stackoverflow上找到類似的問題: https://stackoverflow.com/questions/47585783/apache-access-logs-show-a-domain-name-where-ip-addresses-usually-are 但也沒有人提出解答。 我的猜測可能更DNS伺服器有關,原始的連線資訊可能都是hostname,電腦會連到DNS伺服器解析hostname為IP位置,但當電腦設定的DNS伺服器故障的時,無法解析為IP,自然就只能紀錄hostname了。 這個推測有三個根據,一是換了apache版本都還一樣,有可能不是apache的問題。二是發生問題的期間,網頁連線的速度特別慢,而且隔一陣子後,又恢復正常了。三是並非全部的log都換成hostname,換成hostname的主要都是bot。

單獨更新xampp apache

單獨更新xampp apache 1.下載新的xampp。 2.關掉舊的xampp apache,要移除service中的apache。 3.安裝新的xampp(要修改資料夾名稱,不要跟舊的重複)。 4.把舊的xampp底下apache、cgi-bin兩個資料夾備份起來。 5.把新安裝的xampp底下apache、cgi-bin複製到舊的xampp中。 6.把步驟4備份的apache底下conf資料夾,覆蓋到步驟5的apache底下。 7.完成更新,重開apache。 這個作法可以避免php、sql、ssl出錯等問題。