Time of Update: 2017-02-21
使用 self:: 或者 __CLASS__ 對當前類的靜態引用,取決於定義當前方法所在的類:使用 static:: 不再被解析為定義當前方法所在的類,而是在實際運行時計算的。也可以稱之為“靜態繫結”,因為它可以用於(但不限於)靜態方法的調用。最近在一個視頻的評論被問到一個小問題:這裡選擇用static 而不是self有特殊的考慮嗎?或者我們可以這樣轉換一下問題:PHP 的 new static 和 new self 具體有什麼?其實這個來看一個例子應該就很清晰了:class Father {
Time of Update: 2017-02-21
PHP出現檔案鎖與mysql表鎖有大概想的用法,就是同一時間只能讓一個人操作,這樣就避免了同時有多個人操作同一檔案,這樣導致資料丟失的情況了,下面我來給大家介紹PHP檔案鎖用法。鎖機制之所以存在是因為並發導致的資源競爭,為了確保操作的有效性和完整性,可以通過鎖機制將並髮狀態轉換成串列狀態。作為鎖機制中的一種,PHP的檔案鎖也是為了應對資源競爭。假設一個應用情境,在存在較大並發的情況下,通過fwrite向檔案尾部多次有序的寫入資料,不加鎖的情況下會發生什嗎?多次有序的寫入操作相當於一個事務,我們此
Time of Update: 2017-02-21
最近在閱讀項目的源碼,發現源碼中就對empty、isset和is_null函數(語言特性)亂用,有的地方很明顯的就挖坑了。不能正確的去理解這些東西,就很可能給後續的開發挖坑了。1.empty用法bool empty ( mixed var)如果 var 是非空或非零的值,則 empty() 返回 FALSE。換句話說,""、0、"0"、NULL、FALSE、array()、var $var; 以及沒有任何屬性的對象都將被認為是空的,如果 var
Time of Update: 2017-02-21
本文執行個體講述了php使用json_decode後數字對象轉換成了科學計數法的解決方案。分享給大家供大家參考,具體如下:問題:今天在搞網頁遊戲在facebook積分上的對接,facebook傳過來一個類json字串,想在callball.php頁面當中應用這些參數,於是進行了一次json_decode操作,發現長長的數字都變成了科學計數法,這不是我想要的結果。解決方案:做了各方面的轉換處理都不好使:$obj='{"order_id":213477815351175,
Time of Update: 2017-02-21
本文執行個體講述了php擷取給定日期相差天數的方法。分享給大家供大家參考,具體如下:方法一:<?phpfunction count_days($a,$b){ $a_dt=getdate($a); $b_dt=getdate($b); $a_new=mktime(12,0,0,$a_dt['mon'],$a_dt['mday'],$a_dt['year']); $b_new=mktime(12,0,0,$b_dt['mon'],
Time of Update: 2017-02-21
Cookie 盜竊 因使用Cookie而產生的一個風險是使用者的cookie會被攻擊者所盜竊。如果會話標識儲存在cookie中,cookie的暴露就是一個嚴重的風險,因為它能導致工作階段劫持。 圖4-2. PHP為你處理相關會話管理的複雜過程最常見的cookie暴露原因是瀏覽器漏洞和跨站指令碼攻擊(見第2章)。雖然現在並沒有已知的該類瀏覽器漏洞,但是以往出現過幾例,其中最有名的一例同時發生在IE瀏覽器的4.0,5.0,5.5及6.0版本(這些漏洞都有相應補丁提供)。
Time of Update: 2017-02-21
會話資料暴露 會話資料常會包含一些個人資訊和其它敏感性資料。基於這個原因,會話資料的暴露是被普遍關心的問題。一般來說,暴露的範圍不會很大,因為會話資料是儲存在伺服器環境中的,而不是在資料庫或檔案系統中。因此,會話資料自然不會公開暴露。 使用SSL是一種特別有效手段,它可以使資料在伺服器和用戶端之間傳送時暴露的可能性降到最低。這對於傳送敏感性資料的應用來說非常重要。SSL在HTTP之上提供了一個保護層,以使所有在HTTP請求和應答中的資料都得到了保護。
Time of Update: 2017-02-21
會話固定 關於會話,需要關注的主要問題是會話標識的保密性問題。如果它是保密的,就不會存在工作階段劫持的風險了。通過一個合法的會話標識,一個攻擊者可以非常成功地冒充成為你的某一個使用者。 一個攻擊者可以通過三種方法來取得合法的會話標識: l 猜測l 捕獲l 固定 PHP產生的是隨機性很強的會話標識,所以被猜測的風險是不存在的。常見的是通過捕獲網路通訊資料以得到會話標識。為了避免會話標識被捕獲的風險,可以使用SSL,同時還要對瀏覽器漏洞及時修補。
Time of Update: 2017-02-21
源碼暴露 關於包含的一個重要問題是原始碼的暴露。產生這個問題主要原因是下面的常見情況: l 對包含檔案使用.inc的副檔名l 包含檔案儲存在網站主目錄下l Apache未設定.inc檔案的類型l Apache的預設檔案類型是text/plain 上面情況造成了可以通過URL直接存取包含檔案。更糟的是,它們會被作為普通文本處理而不會被PHP所解析,這樣你的原始碼就會顯示在使用者的瀏覽器上(見圖5-1)。 圖 5-1.
Time of Update: 2017-02-21
後門URL 後門URL是指雖然無需直接調用的資源能直接通過URL訪問。例如,下面WEB應用可能向登入使用者顯示敏感資訊: <?php $authenticated = FALSE; $authenticated = check_auth(); /* ... */ if ($authenticated) { include './sensitive.php'; } ?>
Time of Update: 2017-02-21
代碼注入 一個特別危險的情形是當你試圖使用被汙染資料作為動態包含的前置部分時: <?php include "{$_GET['path']}/header.inc"; ?> 在這種情形下攻擊者能操縱不只是檔案名稱,還能控制所包含的資源。由於PHP預設不只可以包含檔案,還可以包含下面的資源(由設定檔中的allow_url_fopen所控制): <?php include 'http://www.google.com/
Time of Update: 2017-02-21
命令注入 使用系統命令是一項危險的操作,尤其在你試圖使用遠端資料來構造要執行的命令時更是如此。如果使用了被汙染資料,命令注入漏洞就產生了。 Exec()是用於執行shell命令的函數。它返回執行並返回命令輸出的最後一行,但你可以指定一個數組作為第二個參數,這樣輸出的每一行都會作為一個元素存入數組。使用方式如下: <?php $last = exec('ls', $output, $return); print_r($output); echo
Time of Update: 2017-02-20
下面小編就為大家帶來一篇完美解決php 匯出excle的.csv格式的資料時亂碼問題。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧1、header('Content-Encoding: XXXX');有可能是編碼問題:可以嘗試UTF-8,GBK,GB2312,等編碼格式2、有可能是檔案編碼問題,雖然UTF-8不建議帶BOM,但是匯出的excle是微軟的產品,所以需要把檔案格式改成,UTF-8有BOM格式的。以上這篇完美解決php 匯出excle的.
Time of Update: 2017-02-20
暴力密碼破解攻擊 暴力密碼破解攻擊是一種不使用任何特殊手段而去窮盡各種可能性的攻擊方式。它的更正式的叫法是窮舉攻擊——窮舉各種可能性的攻擊。 對於存取控制,典型的暴力密碼破解攻擊表現為攻擊者通過大量的嘗試去試圖登入系統。在多數情況下,使用者名稱是已知的,而只需要猜測密碼。 儘管暴力密碼破解攻擊沒有技巧性可言,但詞典攻擊似乎有一定的技巧性。最大的區別是在進行猜測時的智能化。詞典攻擊只會最可能的情況列表中進行窮舉,而不像暴力密碼破解攻擊一樣去窮舉所有的可能情況。
Time of Update: 2017-02-20
重播攻擊 重播攻擊,有時稱為示範攻擊,即攻擊者重現以前合法使用者向伺服器所發送的資料以擷取訪問權或其它分配給該使用者的許可權。 與密碼嗅探一樣,防止重播攻擊也需要你意識到資料的暴露。為防止重播攻擊,你需要加大攻擊者擷取任何用於取得受限資源的存取權限的資料的難度。這主要要求做到避免以下做法: 設定受保護資源永久訪問權的資料的使用;設定受保護資源訪問權的資料的暴露(甚至是只提供臨時訪問權的資料);
Time of Update: 2017-02-20
源碼暴露 你的WEB伺服器必須要能夠讀取你的源確並執行它,這就意味著任意人所寫的代碼被伺服器運行時,它同樣可以讀取你的源碼。在一個共用主機上,最大的風險是由於WEB伺服器是共用的,因此其它開發人員所寫的PHP代碼可以讀取任意檔案。 <?php header('Content-Type: text/plain'); readfile($_GET['file']); ?>
Time of Update: 2017-02-20
會話注入 一個與會話暴露類似的問題是會話注入。此類攻擊是基於你的WEB伺服器除了對會話儲存目錄有讀取許可權外,還有寫入許可權。因此,存在著編寫一段允許其他使用者添加,編輯或刪除會話的指令碼的可能。下例顯示了一個允許使用者方便地編輯已存在的會話資料的HTML表單: <?php session_start(); ?> <form action="inject.php" method="POST"> <?php
Time of Update: 2017-02-20
安全模式 PHP的safe_mode選項的目的是為瞭解決本章所述的某些問題。但是,在PHP層面上去解決這類問題從架構上來看是不正確的,正如PHP手冊所述(http://www.php.cn/)。 當安全模式生效時,PHP會對正在執行的指令碼所讀取(或所操作)檔案的屬主進行檢查,以保證與該指令碼的屬主是相同的。雖然這樣確實可以防範本章中的很多例子,但它不會影響其它語言編寫的程式。例如,使用Bash寫的CGI指令碼: #!/bin/bash echo "Content-Type:
Time of Update: 2017-02-18
關於類大家都有一定的認識這裡只介紹在php中類值得注意的地方----類的建立----php使用關鍵字class建立一個類,並且使用一對大括弧如:class name{ public $n=""; private $u=""; public function name() { $n="233"; $u="23333"; } public function rename($newn){
Time of Update: 2017-02-18
<?php//產生隨機數 和 時間函數//echo rand();//echo "<br>";//echo rand(0,10);//echo time();//時間戳記//2017-02-10 08:46:12date_default_timezone_set("Asia/Shanghai");//echo date("Y-m-d h:i:s");//預設轉換目前時間//echo date("Y-m-d