Archive

‘專業技術’ 分類過的Archive

Apache mod_rewrite啟用注意事項

2011年1月26日 尚無評論

雖然已經對Apahce 的 mod_rewrite有一定的瞭解,但還是常卡關
最近有發生在某一個Virtual Host設定了rewrite的機制,但.htaccess怎麼試都沒有效果,後來才知~要將目錄設定如下才能啟用

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

印象中卡關好幾次的原因都是它,所以在此寫下提醒自己~^^||

Categories: 系統設定 Tags: ,

Apahce強化php安全性防駭客木馬設定

2011年1月21日 尚無評論

最近碰到一個案例,他的網站已運行好年之久但一直都沒有進行安全更新,導致上頭經年累月的被植入不少木馬程式,例如超級PHP木馬帶批量掛馬,及WEBSHELL, 真是有夠給他慘的啦,搞的整個網站像駭客練功的活靶,雖然砍掉重練好,但還是有些因素要救活他,所以首先要先除掉這些東東~可藉由一些工具例如PHPCMS木馬掃瞄器或是php 木馬, 惡意程式查殺工具,然後再將他的apache及php升級並加上mod_limitipconn及mod_bandwidth然後進行PHP的設定,防止php木馬執行webshell,打開safe_mode,並在php.ini中中disable_functions設定

safe_mod=On
disable_functions= passthru,exec,shell_exec,system

也可再增加防止php木馬讀寫文件目錄
在php.ini中disable_functions後面加上php處理文件的函數,如包含剛剛設定的就要變成以下設定

disable_functions= passthru,exec,shell_exec,system,fopen,mkdir,rmdir,chmod,unlink,dir
,fopen,fread,fclose,fwrite,file_exists
,closedir,is_dir,readdir.opendir
,fileperms.copy,unlink,delfile

大功告成,php木馬就無法拿我們執行一些系統程序了

不過還有一點要設定的,網頁程式有時會寫一些上傳程式給會員及非會員使用,如果上傳上去程式碼能再被執行就糟糕了,所以除了上傳上去後更改檔名~如遇到副檔名是PHP就更名外,以下這招也是不錯的選擇

我們可以設定不讓上傳的目錄執行PHP,可在Apache的httpd.conf設定以下參數值:

<Directory “/home/a/upload”>
AllowOverride None
php_flag engine off
Allow from all
</Directory>

如果你只允許你的php在web目錄裡操作,也可以在httpd.conf中加上

php_admin_value open_basedir /home/a

這樣如果有要使用這個之外的檔案時就會有錯誤訊息 Warning: open_basedir restriction in effect. File is in wrong directory in xxxxxxx

這樣基本木馬及WEBSHELL就防止了,但在測試發現,或許已經中太久了,可能已經成為駭客界的教學教材,三不五十的就是有人會丟一些怪網址TRY漏洞,多半都是對岸來的,真是煩呀~!!

發現這種怪連結一多,還蠻佔資源的,所以做了一個小小的rewrite設定,來防止這種怪連結,因為這個網站本身沒有用rewrite,所以在.php後有加上斜線的怪連結就轉到國家資通安全會報技術服務中心,呵~直接轉過去通報

<IfModule mod_rewrite.c>
RewriteEngine On
RedirectMatch /(.*)\.php/(.*) http://www.icst.org.tw/
</IfModule>

OK~經過這樣的設定後,觀察幾天後看來有用~~希望各位駭先生能就此放過它吧!!

參考資料:

Categories: 系統設定 Tags: , ,

WordPress設定你的固定網址

2011年1月8日 尚無評論

因為前陣子改版了部落格,所以對apache mod_rewrite有更多的認識,因為要將舊版的部落格連結相容可連至新版的wordpress,所以花了不少心力去調整網址的對應,在此分享一下~給有需要的人少一點摸索的時間

#阻止沒有referrer來源鏈接的垃圾評論
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*herolin.webhop.me.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

以上這是去找來的,blog最討厭就是那種垃圾廣告,加了上面這些,應該能阻擋一些簡單的垃圾機器人吧,再來下面這段,是我將重複的簡略後的內容,主要就是在進行一些網址的轉換

#轉址
RewriteCond %{HTTP_HOST} !^herolin.webhop.me$ [NC]
RewriteRule ^(.*)$ http://herolin.webhop.me/$1 [L,R=301]

因為在這次也將原本以http://herolin.mine.nu為主的網址,改成以http://herolin.webhop.me為主,因為http://herolin.mine.nu好像蠻多地方都有被擋~所以還是改成用另一個為主要的網址,所以上述就是在做301的轉址~以便http://herolin.mine.nu還能連到部落格~並且又不會讓搜尋引擎認為你故意弄兩個一模一樣的網站!

#舊blog轉址
RewriteRule ^rss$ /feed [R=301,NC,L]
RewriteRule ^notice/83$ /About-Hero [R=301,NC,L]RewriteRule ^category/專業技術/net$ /category/專業技術/net-專業技術 [R=301,NC,L]
RewriteRule ^category/專業技術/ajax$ /category/專業技術/ajax-專業技術 [R=301,NC,L]
RewriteRule ^archive/([0-9]{4})([0-9]{2})$ entry/$1/$2? [R=301,NC,L] 

再來這段就是針對舊的部落格有些連結和新版的無法對應,所以用這樣對應的方式進行對應,注意,如果你的網址有中文字,而你要將中文字寫到.htaccess裡,記得你的.htaccess要存成UTF-8格式並且是沒有BOM的就可以啦

RewriteCond %{QUERY_STRING} ^page=([0-9]+)$
RewriteRule ^$ /page/%1? [R=301,NC,L]

最後這段,是因為分頁的網址寫的不一樣,所以要再進行調整將參數轉換成新版的靜態網址,這期間TRY了很多也參考了很多資料才弄出來,mod_rewrite真的是很強大,除了上述轉址之外還可以設定cache及傳輸壓縮,有興趣的可以參考以下連結,有更多的介紹及說明。

最後,提醒各位一點,當你寫好你的.htaccess時一定要備份一下, 因為wordpress在設定固定網址時會將.htaccess初始化,小弟就忘了備份,所以又多花了一些時間重摸索,切記切記呀!!

參考資料:

RA layer request failed svn排除法

2010年12月19日 尚無評論

最近工程師在使用SVN遇到了一個鬼問題,沒想到是這樣的解法

就是在SVN commit 時發現了Exception :

org.tigris.subversion.javahl.ClientException: RA layer request failed svn: (details follow): svn: applying log messCommit failed age to /svn/cis/!svn/wbl/xxxx/11359: http://xxxxxxx/svn/cis/!svn/wbl/xxxxx/11359: 500 (status) -> Could not execute PROPPATCH. (http://xxxxx:8800)

解決辦法:將commit時的註釋中間的換行都去掉即可排除,真的見鬼了吧@@

參考資料:http://www.javaeye.com/wiki/topic/766056

Categories: 程式開發 Tags:

register_globals於PHP6後不支援之排除法

2010年11月17日 尚無評論

在最近升級PHP至5.3後,發現都會有一個警告

Warning: Directive register_globals is deprecated in PHP 5.3 and greater in Unknown on line 0

去查了一下才知,原來PHP 中最具爭議的變化就是從 PHP 4.2.0 版開始配置檔中 register_globals 的預設值從 on 改為 off 了,而在5.3版本後就會顯示警告,但還是能開啟使用,但在PHP 6 之後就會全面停用。

哈~因為有register_globals,所以小弟覺得各家程式語言之中,PHP最強大,因為程式隨便寫都能執行~^^||
也可以設定成不用接參數,到了下一頁自動會轉成變數,這對開發者來說是省了不少功夫,不過也是因為如此,所以程式就不夠嚴謹,而且還會有安全性的問題,所以還是乖乖使用比較正統的方式寫CODE 吧 ~><~

註:如果想知道為何會不安全,請看以下連結說明:

除了 register_globals之外,當然也還有幾個參數也準備廢除,如下:

register_long_arrays
magic_quotes_gpc

magic_quotes_gpc這參數也頂棒的~可以不用去管是不是要加反斜線~唉~這也是安全性的考量要拿掉嗎? 怪的~去查了一下,拿掉主要因素不一樣啦~~是因為會影響程式造成可移移植性低、效能問題及容易造成困惑,詳細請看以下的文章:

不過這些參數,舊程式蠻都有介由他們進行自動轉換,沒了程式不就要大改了..呵~~好在還有偷吃步的方式,在 register_globals=Off的情況下,還是可以用以下程式碼達到同等效果。

<?php
if (!ini_get('register_globals'))
{
   extract($_POST);
   extract($_GET);
   extract($_SERVER);
   extract($_FILES);
   extract($_ENV);
   extract($_COOKIE);
   if ( isset($_SESSION) )
   {
       extract($_SESSION);
   }
}
?>

這樣只要加到會include的共用頁這樣就升級程式支援該參數被關掉了~^^
而magic_quotes_gpc被關掉也有解法,有興趣的人可以看剛剛上面那個連結,只是沒這個好改了!!

Categories: PHP Tags: ,
分頁: 上一頁 1 2 3 4 5 6 7 8 9 10 ... 26 27 28 下一頁