2015年8月12日 星期三

超全域變數—$_FILES

超全域變數—$_GET,$_POST

$_GET
通過URL 參數傳遞給當前腳本的變數的陣列。

範例:
<?php
echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!';
?>
假設用戶訪問的是http://example.com/?name=Hannes

以上例程的輸出類似於:
Hello Hannes!
GET 是通過 urldecode() 傳遞的。

$_POST
範例
<?php
echo 'Hello ' . htmlspecialchars($_POST["name"]) . '!';
?>
假設用戶通過HTTP POST 方式傳遞了參數name=Hannes

以上例程的輸出類似於:
Hello Hannes!

超全域變數—$_SERVER

$_SERVER
$_SERVER 是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的陣列。
這個陣列中的項目由Web伺服器產生。

在$_SERVER 中,你也許能夠,也許不能夠找到下面的這些元素。
注意,如果以命令行方式運行PHP,下面列出的元素幾乎沒有有效的(或是沒有任何實際意義的)。

'PHP_SELF'
當前執行腳本的文件名,與document root 有關。
例如,在地址為http://example.com/test.php/ 的腳本中使用$_SERVER['PHP_SELF']
將得到/test.php。
'argv'
傳遞給該腳本的參數的陣列。當腳本以命令行方式運行時,argv 變數傳遞給程序C 語言樣式的命令行參數。
當通過GET 方式調用時,該變數包含query string。
'argc'
包含命令行模式下傳遞給該腳本的參數的數目(如果運行在命令行模式下)。
'GATEWAY_INTERFACE'
伺服器使用的CGI 規範的版本;例如,“CGI/1.1”。
'SERVER_ADDR'
當前運行腳本所在的伺服器的IP 地址。
'SERVER_NAME'
當前運行腳本所在的伺服器的主機名。如果腳本運行於虛擬主機中,該名稱是由那個虛擬主機所設置的值決定。
'SERVER_SOFTWARE'
伺服器標識字符串,在響應請求時的頭信息中給出。
'SERVER_PROTOCOL'
請求頁面時通信協議的名稱和版本。例如,“HTTP/1.0”。
'REQUEST_METHOD'
訪問頁面使用的請求方法;例如,“GET”, “HEAD”,“POST”,“PUT”。
如果請求方法為HEAD,PHP 腳本將在發送Header 頭信息之後終止(這意味著在產生任何輸出後,不再有輸出緩衝)。
'REQUEST_TIME'
請求開始時的時間戳。從 PHP 5.1.0 起可用。
'REQUEST_TIME_FLOAT'
請求開始時的時間戳,微秒級別的精準度。自 PHP 5.4.0 開始生效。
'QUERY_STRING'
query string(查詢字串),如果有的話,通過它進行頁面訪問。
'DOCUMENT_ROOT'
當前運行腳本所在的文檔根目錄。在伺服器配置文件中定義。
'HTTP_ACCEPT'
當前請求頭中Accept: 項的內容,如果存在的話。
'HTTP_ACCEPT_CHARSET'
當前請求頭中Accept-Charset: 項的內容,如果存在的話。例如:“is​​o-8859-1,*,utf-8”。
'HTTP_ACCEPT_ENCODING'
當前請求頭中Accept-Encoding: 項的內容,如果存在的話。例如:“gzip”。
'HTTP_ACCEPT_LANGUAGE'
當前請求頭中Accept-Language: 項的內容,如果存在的話。例如:“en”。
'HTTP_CONNECTION'
當前請求頭中Connection: 項的內容,如果存在的話。例如:“Keep-Alive”。
'HTTP_HOST'
當前請求頭中Host: 項的內容,如果存在的話。
'HTTP_REFERER'
引導用戶代理到當前頁的前一頁的地址(如果存在)。由 user agent 設置決定。並不是所有的用戶代理都會設置該項,有的還提供了修改HTTP_REFERER 的功能。簡言之,該值並不可信。
'HTTP_USER_AGENT'
當前請求頭中User-Agent: 項的內容,如果存在的話。該字符串表明了訪問該頁面的用戶代理的信息。一個典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。除此之外,你可以通過get_browser() 來使用該值,從而定制頁面輸出以便適應用戶代理的性能。
'HTTPS'
如果腳本是通過HTTPS 協議被訪問,則被設為一個非空的值。
Note: 注意當使用IIS 上的ISAPI 方式時,如果不是通過HTTPS 協議被訪問,這個值將為off。
'REMOTE_ADDR'
瀏覽當前頁面的用戶的 IP 地址。
'REMOTE_HOST'
瀏覽當前頁面的用戶的主機名。 DNS 反向解析不依賴於用戶的REMOTE_ADDR。
Note: 你的伺服器必須被配置以便產生這個變數。例如在Apache 中,你需要在httpd.conf 中設置HostnameLookups On 來產生它。參見 gethostbyaddr()。
'REMOTE_PORT'
用戶機器上連接到Web 伺服器所使用的端口號。
'REMOTE_USER'
經驗證的用戶
'REDIRECT_REMOTE_USER'
驗證的用戶,如果請求已在內部重定向。
'SCRIPT_FILENAME'
當前執行腳本的絕對路徑。
'SERVER_ADMIN'
該值指明了Apache 伺服器配置文件中的SERVER_ADMIN 參數。如果腳本運行在一個虛擬主機上,則該值是那個虛擬主機的值。
'SERVER_PORT'
Web 伺服器使用的端口。預設值為 “80”。如果使用SSL 安全連接,則這個值為用戶設置的HTTP 端口。
'SERVER_SIGNATURE'
包含了伺服器版本和虛擬主機名的字符串。
'PATH_TRANSLATED'
當前腳本所在文件系統(非文檔根目錄)的基本路徑。這是在伺服器進行虛擬到真實路徑的映像後的結果。
Note: 自PHP 4.3.2 起,PATH_TRANSLATED 在Apache 2 SAPI 模式下不再和Apache 1 一樣隱含賦值,而是若Apache 不生成此值,PHP 便自己生成並將其值放入SCRIPT_FILENAME 伺服器常量中。這個修改遵守了CGI 規範,PATH_TRANSLATED 僅在PATH_INFO 被定義的條件下才存在。 Apache 2 用戶可以在httpd.conf 中設置AcceptPathInfo = On 來定義PATH_INFO。
'SCRIPT_NAME'
包含當前腳本的路徑。這在頁面需要指向自己時非常有用。 __FILE__ 常量包含當前腳本(例如包含文件)的完整路徑和文件名。
'REQUEST_URI'
URI 用來指定要訪問的頁面。例如 “/index.html”。
'PHP_AUTH_DIGEST'
當作為Apache 模塊運行時,進行HTTP Digest 認證的過程中,此變數被設置成客戶端發送的“Authorization” HTTP 頭內容(以便作進一步的認證操作)。
'PHP_AUTH_USER'
當PHP 運行在Apache 或IIS(PHP 5 是ISAPI)模塊方式下,並且正在使用HTTP 認證功能,這個變數便是用戶輸入的用戶名。
'PHP_AUTH_PW'
當PHP 運行在Apache 或IIS(PHP 5 是ISAPI)模塊方式下,並且正在使用HTTP 認證功能,這個變數便是用戶輸入的密碼。
'AUTH_TYPE'
當PHP 運行在Apache 模塊方式下,並且正在使用HTTP 認證功能,這個變數便是認證的類型。
'PATH_INFO'
包含由客戶端提供的、跟在真實腳本名稱之後並且在查詢語句(query string)之前的路徑信息,如果存在的話。例如,如果當前腳本是通過URL http://www.example.com/php/path_info.php/some/stuff?foo=bar 被訪問,那麼$_SERVER['PATH_INFO'] 將包含/some/stuff。
'ORIG_PATH_INFO'
在被PHP 處理之前,“PATH_INFO” 的原始版本。

範例
Example #1 $_SERVER 範例
<?php
echo $_SERVER['SERVER_NAME'];
?>
以上例程的輸出類似於:
www.example.com

2015年8月6日 星期四

防火牆----高階防火牆應該有的功能

封包過濾(Packet Filtering)
  Rule & Policy
  service: Telnet SSH Mail
  port:
  Host:
  Dynamic Packet
  packet level

入侵偵測(Intrusion Detection)
  警示系統(Alert System)
    send email
    log files
  緩衝區溢位 Buffer Overflow
    SQL Injection...
   

門禁管制(Access Policy)
   使用者認證(User-Level Authentication)

應用程式過濾(Application Filtering)
   網站過濾器(Web Filter)
   虛擬私人網路VPN(Virtual Private Networking)
   網路位置轉換(NAT: Network Address Translator)


阻斷服務攻擊DoS(Denial of Service)
     TCP/UDP PortScan   
     ICMP Smurf
     IP Land
     IP Spoof
     IP TearDrop
     PingOfDeath
     TCP Scan
     TCP SynWithData
     UDP Bomb
     UDP EchoChargen

駭客攻擊的手法

駭客攻擊的大方向可分為3類: 
1.入侵(invade) 
漏洞
植入(injection)


 2.阻斷服務攻擊(Denial of Service Attack,縮寫:DoS)
癱瘓網路的流量


3.竊取資訊 

政府機關常被使用,駭客寄偽裝email,用正式檔案內含木馬或惡意程式。
利用公司內部人員的疏忽,放太多資訊在社交網站 
利用公司內部人員的疏忽,download不明軟體
利用公司內部人員的疏忽,去不對的網站
利用公司內部人員的疏忽,太弱的密碼
利用公司內部人員的疏忽,做任何愚蠢的事

 目標和目的:

1. 放入惡意程式、偽裝程式、木馬、病毒
2. 跳板
3. 竊取個人重要資料
4. 政治訴求
5. 炫耀





2015年8月5日 星期三

賦值運算子 (assignment operator)php&python

$var .= "value";
它是一種賦值運算子(assignment operator) 。它的工作原理類似於:
$var = $var . "value";

PHP賦值運算
賦值運算(assignment operator) 有時會讓人搞得一頭霧水,不過它可以讓程序更精簡,增加程序的執行效率。
符號 意義
.=  將右邊的字串加到左邊
+= 相加同時指派 a += b
-= 相減同時指派 a -= b
*= 相乘同時指派 a *= b/= 相除同時指派 a /= b
%= 取餘數同時指派 a %= b


<?php
$a = 5;
$a += 2; // 即 $a = $a + 2;
echo $a."<br>\n";

$b = "賦";
$b .= "值"; // $b = "賦值";
$b .= "運算"; // $b = "賦值運算";
echo "$b<br>\n";
?>


Python 的賦值運算子 (assignment operator):
+= 相加同時指派 a += b
-= 相減同時指派 a -= b
*= 相乘同時指派 a *= b
**= 取指數同時指派 a **= b
/= 相除同時指派 a /= b
/= 整數相除同時指派 a //= b
%= 取餘數同時指派 a %= b
&= 位元且同時指派 a &= b
^= 位元互斥或同時指派 a ^= b
|= 位元包含或同時指派 a |= b
<<= 向左位移同時指派 a <<= b
>>= 向右位移同時指派 a >>= b

2015年8月1日 星期六

認識膽固醇

膽固醇
一種白色的蠟類物質的結晶,對於維持生命非常重要,存在於人類和所有動物的細胞裏。

膽固醇可以分成兩種
低密度脂蛋白膽固醇(LDL)及高密度脂蛋白膽固醇(HDL)。若血液中膽固醇的總含量過高,則發生心血管疾病的機率會提高。

我們的肝臟製造膽固醇
此外,我們也從食物攝取不同分量的膽固醇
在血液裏,一些稱為脂蛋白的分子把膽固醇輸送到細胞去,而脂蛋白則由膽固醇、脂肪和蛋白質構成。脂蛋白有兩種,分别稱為低密度脂蛋白(英語縮寫為LDL)和高密度脂蛋白(英語縮寫為HDL),負責輸送血液裏大部分的膽固醇。
LDL含豐富的膽固醇。這些分子在血液裏運行,並通過細胞壁的LDL受體,進入細胞裏,然後分解開來,供細胞使用。

另一方面,HDL是一些迅速吸收膽固醇的分子。HDL在血液裏運行時會吸收過剩的膽固醇,然後將其運回肝臟去。肝臟於是把膽固醇分解,然後排出體外。若無法順利排出,LDL就會過高。難怪LDL稱為壞的膽固醇,而HDL則稱為好的膽固醇

總膽固醇的臨界值為200~239mg/dl
超過這個值,就必須接受治療。如果測試顯示血液裏的LDL水平過高,而HDL水平較低的話,患上心臟病的機會也較大。

Statin 類藥物
一類常被醫生處方來幫助降低血液中膽固醇濃度的藥物。