2014年2月11日 星期二

[apache] 轉址

1. rewrite 要打開

2. vhost 加上下面程式,網址打 www.abc.idv.tw 網址會轉到 www.abc.com
<VirtualHost *:80>
    ServerAdmin wsxrtgvbuikm@hotmail.com
    DocumentRoot "/home/user/web"
    ServerName www.abc.idv.tw
    RewriteEngine on
    RewriteRule ^(.*) http://www.abc.com$1 [R=301,L]
</VirtualHost>

3. 在 httpd.cnf 或 .htaccess 加上
Redirect /yahoo  http://tw.yahoo.com  -> 打上 www.abc.idv.tw/yahoo 會轉到 tw.yahoo.com
Redirect /google  http://www.google.com

2014年2月7日 星期五

[apache] windows中優化apache

Windows 與 linux 的回收機制和進程管理不同

1. http-mpm.conf設置
修改 httpd.conf 將 #Indude conf/extra/httpd-mpm.conf 去掉#
開啟 extra/httpd-mpm.conf 裡面有很多設定,但只有下方的設定有效果


ThreadsPerChild
是Apache進程的子線程數,這個指令設置了每個子進程建立的線程數。子進程在啟動時建立這些線程後就不再建立新的線程了。
不能設定太大會當機

待續...

參考資料:
http://www.pigo.idv.tw/archives/1708
http://www.piaoyi.org/php/Windows-Apache-mpm_winnt_module.html

2014年1月23日 星期四

[Firfox] 好用的Firefox的套件,可以方便測試網站漏洞

好用的Firefox的套件,可以方便測試網站漏洞
https://addons.mozilla.org/zh-tw/firefox/addon/hackbar/

[SSL] IIS 憑證轉移到 Apache

一、先將IIS憑證匯出
1‧請點選「開始→執行」,並輸入『mmc』指令後,按確定:

2‧會出現「主控台」管理工具:

3‧請點選工具列上的「主控台」,並執行「新增/移除嵌入式管理單元」:

4‧如下管理視窗後,請按下「新增」:

5‧出現如下管理視窗後,將視窗拉至最後,並選擇「憑證」後,按「新增」:

6‧點選「電腦帳戶」選項:

7‧請點選「本機電腦」後,按下「完成」:

8‧完成後,您可以在管理視窗中看到「憑證」,並按下「確定」鈕:

9‧在展開樹狀結構後,您可以看申請的伺服器憑證,如下:

10‧在該憑證上按右鍵,選擇「所有工作→匯出」,啟動憑證精靈:

11‧啟動「憑證匯出精靈」,按「下一步」:

12‧請點選「匯出私密金鑰」選項後,按「下一步」:

13‧請勾選「如果可能的話,在憑證路徑中包含所有憑證」及「啟用加強保護」這2個選項:

14‧請輸入密碼,以保護您的私鑰:

15‧請設定存放之位置,並請注意副檔名應為 .pfx: 16‧已將憑證成功匯出:
二、匯入apache
  1. 透過 Apache 2.2 所附的 openssl.exe 工具進行檔案格式的轉換
    1. 先開啟「命令提示字元」視窗,並進入 C:\Program Files\Apache Software Foundation\Apache2.2\bin 目錄
    2. 執行以下指令:
      C:\...\Apache2.2\bin> openssl.exe pkcs12 -in c:\mycert.pfx -out c:\mycert.txt -nodes
      Enter Import Password:
      MAC verified OK
      當你輸入 openssl.exe pkcs12 -in c:\mycert.pfx -out c:\mycert.txt -nodes 指令後,會被要求再次輸入憑證密碼,若驗證正確就會建立一個 c:\mycert.txt 檔案。
    3. 這時用記事本開啟 c:\mycert.txt 檔案,裡面同時包含兩個憑證,分別是 伺服器私鑰(RSA PRIVATE KEY) 與 伺服器憑證(CERTIFICATE)。
    4. 請在 C:\Program Files\Apache Software Foundation\Apache2.2\conf 目錄下先建立兩個空檔案,檔名分別是 server.key 與 server.crt
    5. 這時將 c:\mycert.txt 檔案中的兩個憑證內容分別複製到這兩個檔案內,檔案的內容應該只包括 -----BEGIN *----- 到 -----END * ----- 的內容,c:\mycert.txt 中其他的資料都不能出現在這兩個檔案中。
      1. server.key 的內容會像如下的內容
        -----BEGIN RSA PRIVATE KEY-----
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        ................
        ................
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
        -----END RSA PRIVATE KEY-----
      2. server.crt 的內容會像如下的內容
        -----BEGIN CERTIFICATE-----
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        ........
        ........
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
        -----END CERTIFICATE-----
三、設定SSL
  1. 編輯 C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf 檔案
    1. 取消註解 LoadModule ssl_module modules/mod_ssl.so
    2. 取消註解 Include conf/extra/httpd-ssl.conf
  2. 編輯 C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-ssl.conf檔案
    1. 將此檔中所有 _default_ 都改成 *
    2. 取消註解 SSLCertificateChainFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/server-ca.crt"
四、重開Apache








參考:
http://blog.miniasp.com/post/2008/09/26/How-to-migrate-SSL-key-from-IIS-to-Apache.aspx
凱森興業_IIS6備份手冊_匯出

2014年1月16日 星期四

[apache] 啟用Apache2 的mod_deflate(gzip)來壓縮網頁提高傳輸效能

參考網址:
http://yblog.org/archive/index.php/5318


今天為了讓Apache 2能夠啟用網頁壓縮,本來是找有經驗的朋友幫忙看用mod_gzip來壓縮會不會比較好,畢竟gzip壓縮網頁輸出是很多人都在採用的技術。

後來翻Apache 2 Module mod_deflate 資料才發現,原來很多人用mod_gzip其實是因為Apache 1.x系列沒有內建網頁壓縮技術,所以才去用的。Apache 2官方在開發的時候,就把網頁壓縮考慮進去,內建了mod_deflate這個模組,所以Apache 2就不需要使用到mod_gzip,但2者運作的原理頗為類似。

啟用mod_deflate這個網頁壓縮的模組,功能和效率和mod_gzip是差不多的,甚至還好一些,且不需要再另外找mod_gzip模組,apache 2就有內建,將模組前面的註解拿掉就可以使用。

yblog.org啟用後,所消耗的頻寬流量便下降許多,可以同時提供給更多人瀏覽頁面的頻寬資源,考量本站使用的文件格式後,實作的方法如下:
在http.conf檔案裡有關載入模組的地方,加上這一行:
LoadModule deflate_module modules/mod_deflate.so
接著,在http.conf檔案後面,加上這一段:
<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE js css
</ifmodule>
這樣的作法可以壓縮一般網頁中會用到的html、xml、php、css、js等格式檔案輸出,雖然會佔用掉伺服器處理器的一點點處理器時間,瀏覽者在接收網頁資料時也會消耗極短暫的一點點處理器時間(短到使用者不可能察覺),不過卻可以大幅減少資料傳輸量,減少網路頻寬被吃掉的情形。

DeflateCompressionLevel 9是指壓縮程度的等級,從1到9,9是最高等級。據了解,這樣做最高可以減少8成大小的傳輸量(看檔案內容而定),最少也能夠節省一半。

DeflateCompressionLevel 預設可以採用 6 這個數值,以維持耗用處理器效能與網頁壓縮品質的平衡。

至於已經是壓縮過的圖片格式如jpg,音樂檔案如mp3、壓縮檔如zip之類的,就可以不需要再壓縮了,因為這種檔案你一開放伺服器傳輸時壓縮,處理器時間會跑不完。

有關這個mod_deflate的效能,這篇文章Apache 2 mod_deflate Benchmark分析得很好,也值得參考。

要檢查加上模組的成果,可以馬上透過這個網站來看看壓縮效率如何Real-Time Compression Check(已經失聯),我們來改用這個網站Check HTTP Compression來檢查。

以優格網首頁為例,25445 bytes變成7828 bytes,壓縮後的比例約省下了70%。而以永遠的真田幸村為例,首頁從69045 bytes變成18001 bytes,節省了74%,傳輸速度快了的3.8倍,不過處理速度沒有變慢。

至於Lighttpd這套也很紅的網頁伺服器軟體平台,也支援mod_deflate來壓縮網頁提高傳輸效能。

而微軟Window伺服器的IIS平台,IIS5得搭配外掛的模組才能實現壓縮功能,IIS6、IIS7則有內建,但壓縮的效能都沒有Apache系列好就是了。XD

[apache] httpd-default.conf

TimeOut
語法:TimeOut <數字>
預設:TimeOut 300

TimeOut 用來設定伺服器接收一個請求以及完成一個請求最長的等待時間〈以秒為單位〉
,如果在此時間內沒有回應則終止服務。
所以當接收或傳送一個資料時所花的時間超過 TimeOut 所規定的時間時,伺
服器便將會中斷該連線。如果網路速度較慢,則此 Timeout 時間可以設長一些。


KeepAlive
語法:KeepAlive <(On/Off)>
預設:KeepAlive On

KeepAlive 用於設定伺服器要不要開啟連續請求的功能,On 是開啟,Off 是關閉。


MaxKeepAliveRequests
語法:MaxKeepAliveRequests <個數>
預設:MaxKeepAliveRequests 100

MaxKeepAliveRequests 用於設定伺服器所能接受之最大連續請求量,
如果連續請求超過這個此數限制則 Server 會自動拒絕請求連線。
若設定為 0 則表示不做限制。


KeepAliveTimeout
語法:KeepAliveTimeout <秒數>
預設:KeepAliveTimeout 15

KeepAliveTimeout 用於設定使用者 ‘連續’ 請求等待的時間上限,
如果使用者連續請求的時間超過此數,則終止此請求服務。

UseCanonicalName
語法:UseCanonicalName On | Off | DNS
默認:UseCanonicalName Off
這個指令用來構造Apache的自引用URL(一個指回相同服務器的URL)。
UseCanonicalName .:會將ServerName設置的域名用於所有的自引用URL、SERVER_NAME、CGI中的SERVER_PORT。
比如:如果你的web服務器有自己的域名,並且在DNS中有對應的NS記錄,
而且httpd.conf將ServerName設置了域名,那麼你在瀏覽器中輸入http://192.168.120.240/bbs,
它會自動將這個IP地址變成其對應的域名,比如http://www.bob.com/bbs/ 。
此時,如果其他客戶端的電腦不能正確的解析web服務器的這個域名,
那麼在訪問這個web服務器時將會出現問題。因為web服務器會自動將IP地址轉變成域名。
UseCanonicalName Off:如果客戶端提供了主機名和端口,
Apache將會使用客戶端提供的這些信息來構建自引用URL。
這些值與用於實現基於域名的虛擬主機的值相同,並且對於同樣的客戶端可用。
CGI變量SERVER_NAME和SERVER_PORT也會由客戶端提供的值來構建。
UseCanonicalName DNS:本設置用於為大量基於IP的虛擬主機支持那些不提供“
Host:“頭的瀏覽器使用。使用這個選項時,Apache將對客戶端連入的服務器的IP地址進行DNS反向解析,以構建自引用URL。

AccessFileName .htaccess
讀取.htaccess檔案

ServerTokens
說明配置“服務器:”應答頭
語法的ServerTokens大|小|民[進制]|配件[uctOnly]|操作系統|全
默認值的ServerTokens全
作用域服務器配置
狀態核心(C)
模塊核心
这个指令控制了服务器回应给客户端的"Server:"应答头是否包含关于服务器操作系统类型和编译进的模块描述信息。
的ServerTokens配件[uctOnly]
服務器會發送(比如):服務器:Apache
主要的ServerTokens
服務器會發送(比如):服務器:Apache /2
的ServerTokens小
服務器會發送(比如):服務器:Apache/2.0
的ServerTokens敏[進制]
服務器會發送(比如):服務器:Apache/2.0.41
的ServerTokens OS
服務器會發送(比如):服務器:Apache/2.0.41(Unix的)
的ServerTokens全(或未指定)
服務器會發送(比如):服務器:Apache/2.0.41(Unix的)PHP/4.2.2 MyMod/1.2
此設置將作用於整個服務器,而且不能用在虛擬主機的配置段中。

ServerSignature On
告知使用者目前情形的網頁時,是否要附加上一些提示使用者的資訊。
如果設定為 "Off",就是除了內定告知使用者的資訊以外,不再附加其他資訊。
如果設定為 "On",則表示在該網頁加上 ServerName 指令所指定的伺服器名稱;
如果設定為 "Email",則在該告知網頁上,附加 ServerAdmin 後面所指定的電子郵件位址。



參考網址
http://sikotec.wordpress.com/2009/12/04/apache-%E8%A8%AD%E5%AE%9A%E4%BC%BA%E6%9C%8D%E5%99%A8%E6%89%80%E8%83%BD%E6%8E%A5%E5%8F%97%E4%B9%8B%E6%9C%80%E5%A4%A7%E9%80%A3%E7%BA%8C%E8%AB%8B%E6%B1%82%E9%87%8F-2/

http://yuanbin.blog.51cto.com/363003/126801 

http://yhail.blog.51cto.com/2754941/497379

http://mis.mcps.tp.edu.tw/2006/12/01/%E5%A6%82%E4%BD%95%E4%B8%8D%E8%AE%93-apache-%E6%B4%A9%E6%BC%8F%E4%BD%A0-server-%E7%9A%84%E8%B3%87%E8%A8%8A%EF%BC%9F/

2014年1月15日 星期三

【apache】SSL

名詞:

*Secure socket layer (SSL) 
是網際網路中的全球標準協定網路中,除了可以鑒別網站和網頁瀏覽者身份外,還可以供瀏覽器使用者及網頁伺服器之間進行加密通訊,保護敏感資料安全。運用 SSL 可讓電子商務網站管理者,簡單、迅速地提供客戶一個安全有保障的網路交易環境。


*Transport Layer Security (TLS)
IETF(www.ietf.org)將SSL作了標準化,即RFC2246,並將其稱為TLS
TLS利用密鑰演算法網際網路上提供端點身份認證通訊保密,其基礎是公鑰基礎設施public key infrastructure,PKI)。不過在實現的典型例子中,只有網路服務者被可靠身份驗證,而其客戶端則不一定。這是因為公鑰基礎設施普遍商業運營,電子簽名證書通常需要付費購買。協議的設計在某種程度上能夠使主從式架構應用程序通訊本身預防竊聽干擾Tampering)和消息偽造
TLS包含三個基本階段:
  1. 對等協商支援的密鑰演算法
  2. 基於非對稱密鑰的信息傳輸加密和身份認證、基於PKI證書的身份認證
  3. 基於對稱密鑰的數據傳輸保密
在第一階段,客戶端與伺服器協商所用密碼演算法。 當前廣泛實現的演算法選擇如下:


*RC4
Ron Rivest1987年設計的密鑰長度可變的流加密演算法。它加解密使用相同的密鑰,因此也屬於對稱加密演算法。RC4是有線等效加密(WEP)中採用的加密演算法,也是安全套接層(SSL)可採用的演算法之一。
RC4由偽隨機數生成器和異或運算組成。RC4的密鑰長度可變,範圍是[1,255]。RC4一個位元組一個位元組地加解密。給定一個密鑰,偽隨機數生成器接受密鑰併產生一個S盒。S盒用來加密數據,而且在加密過程中S盒會變化。
由於異或運算對合性,RC4加密解密使用同一套演算法。
目前一般SSL加密是用RC4_128加密。

*Secure Hash Algorithm (SHA) 安全雜湊演算法
是一種能計算出一個數位訊息所對應到的,長度固定的字串(又稱訊息摘要)的演算法。且若輸入的訊息不同,它們對應到不同字串的機率很高;而SHA是FIPS所認證的五種安全雜湊演算法。這些演算法之所以稱作「安全」是基於以下兩點(根據官方標準的描述):「1)由訊息摘要反推原輸入訊息,從計算理論上來說是很困難的。2)想要找到兩組不同的訊息對應到相同的訊息摘要,從計算理論上來說也是很困難的。任何對輸入訊息的變動,都有很高的機率導致其產生的訊息摘要迥異。」
SHA家族的五個演算法,分別是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美國國家安全域(NSA)所設計,並由美國國家標準與技術研究院(NIST)發佈;是美國的政府標準。後四者有時並稱為SHA-2。SHA-1在許多安全協定中廣為使用,包括TLSSSLPGPSSHS/MIMEIPsec,曾被視為是MD5(更早之前被廣為使用的雜湊函式)的後繼者。但SHA-1的安全性如今被密碼學家嚴重質疑;雖然至今尚未出現對SHA-2有效的攻擊,它的演算法跟SHA-1基本上仍然相似;因此有些人開始發展其他替代的雜湊演算法。緣於最近[何時?]對SHA-1的種種攻擊發表,「美國國家標準與技術研究院(NIST)開始設法經由公開競爭管道(類似高級加密標準AES的發展經過),發展一個或多個新的雜湊演算法。」

*RSA加密演算法
是一種非對稱加密演算法。在公開密鑰加密電子商業中RSA被廣泛使用。


SSL加密流程
http://www.netadmin.com.tw/article_content.aspx?sn=1106140008






參考網址
:http://joe01032002.pixnet.net/blog/post/92665237-%E3%80%90php%E3%80%91%E5%88%A9%E7%94%A8openssl%E5%AF%A6%E4%BD%9Cssl%E7%B6%B2%E9%A0%81%E5%8A%A0%E5%AF%86

http://zh.wikipedia.org/wiki/%E5%AE%89%E5%85%A8%E5%A5%97%E6%8E%A5%E5%B1%82

http://zh.wikipedia.org/wiki/RC4

http://zh.wikipedia.org/wiki/SHA%E5%AE%B6%E6%97%8F

http://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95

2014年1月13日 星期一

【php】htmlspecialchars_decode() 函數把一些預定義的 HTML 實體轉換為字符

文章出處:http://stockwfj3.pixnet.net/blog/post/61087773-%5Bphp%5Dhtmlspecialchars_decode()-%E5%87%BD%E6%95%B8%E6%8A%8A%E4%B8%80%E4%BA%9B%E9%A0%90%E5%AE%9A%E7%BE%A9%E7%9A%84-h

[php]htmlspecialchars_decode() 函數把一些預定義的 HTML 實體轉換為字符。

會被解碼的 HTML 實體是:

    &amp; 成為 & (和號)
    &quot; 成為 " (雙引號)
    &#039; 成為 ' (單引號)
    &lt; 成為 < (小於)
    &gt; 成為 > (大於)

例子

<?php
$str = "John &amp; &#039;Adams&#039;";
echo htmlspecialchars_decode($str);
echo "<br />";
echo htmlspecialchars_decode($str, ENT_QUOTES);
echo "<br />";
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
?>

瀏覽器輸出:

John & 'Adams'
John & 'Adams'
John & 'Adams'

如果在瀏覽器中查看源代碼,會看到這些 HTML:

<html>
<body>
John & &#039;Adams&#039;<br />
John & 'Adams'<br />
John & &#039;Adams&#039;
</body>
</html>

2014年1月10日 星期五

【apache】隱藏 apache 及 php 版本

Apache: 
開啟 httpd.conf,
加入以下兩行:
ServerTokens ProductOnly
ServerSignature Off

PHP:
修改php.ini
expose_php = Off

2014年1月2日 星期四

【jquery】keypress、keydown 取得所按的鍵


1.數字0鍵值48..數字9鍵值57
2.a鍵值97..z鍵值122;A鍵值65..Z鍵值90
3.+鍵值43;-鍵值45;.鍵值46;退格8;tab鍵值9;
4.event在ie中是全局的,在firefox是臨時對象,需要傳遞參數