做web開發,我們經常會做代碼走查,很多時候,我們都會抽查一些核心功能,或者常會出現漏洞的邏輯。隨著技術團隊的壯大,組員技術日益成熟。 常見傻瓜型SQL注入漏洞、以及XSS漏洞。會越來越少,但是我們也會發現一些新興的隱蔽性漏洞偶爾會出現。這些漏洞更多來自開發人員,對一個函數、常見模組功能設計不足,遺留下的問題。以前我們能夠完成一些功能模組,現在要求是要安全正確方法完成模組才行。
密碼編譯演算法:使用HMAC-SHA1簽名方法複製代碼 代碼如下: /** * @brief 使用HMAC-SHA1演算法產生oauth_signature簽名值 * * @param $key 密鑰 * @param $str 源串 * * @return 簽名值 */ function getSignature($str, $key) { $signature = ""; if
Regex在 PHP 中的應用在 PHP 應用中,Regex主要用於:•正則匹配:根據Regex匹配相應的內容•正則替換:根據Regex匹配內容並替換•正則分割:根據Regex分割字串在 PHP 中有兩類Regex函數,一類是 Perl 相容Regex函數,一類是 POSIX 擴充Regex函數。二者差別不大,而且推薦使用Perl 相容Regex函數,因此下文都是以 Perl 相容Regex函數為例子說明。定界符Perl
範例程式碼1: 用file_get_contents 以get方式擷取內容複製代碼 代碼如下:$url='http://www.baidu.com/';$html=file_get_contents($url);//print_r($http_response_header);ec($html);printhr();printarr($http_response_header);printhr();?>範例程式碼2: 用fopen開啟url, 以get方式擷取內容複製代碼
代碼如下:複製代碼 代碼如下:$a;$b = false;$c = '';$d = 0;$e = null;$f = array();首先是empty的var_dump輸出:boolean trueboolean trueboolean trueboolean trueboolean trueboolean true然後是is_null的輸出:boolean trueboolean falseboolean falseboolean falseboolean trueboolean
複製代碼 代碼如下:/*============================檔案說明======================================== @filename: session.class.php @description: 資料庫儲存線上使用者session,實現線上使用者功能! @notice: session到期時間一個小時,因為我們的網站是使用cookie(有效時間是1小時)登入。
在php.ini檔案中將 extension=php_mbstring.dll 移動到 extension=php_exif.dll 之前.因為 exif 要調用 mbstring, 所以 mbstring 必須在前面.php_exif.dll, EXIF 函數庫,需要 php_mbstring.dll.並且在 php.ini 中, php_exif.dll 必須在 php_mbstring.dll 之後載入.如若不行,則檢查 php.ini 中預設的 extension_dir 值是否為
有些主機服務商把php的allow_url_fopen選項是關閉了,就是沒法直接使用file_get_contents來擷取遠程web頁面的內容。那就是可以使用另外一個函數curl。下面是file_get_contents和curl兩個函數同樣功能的不同寫法file_get_contents函數的使用樣本:複製代碼 代碼如下:$file_contents = file_get_contents('http://www.jb51.net');echo
PHP擷取當前url路徑的函數及伺服器變數:代碼:複製代碼 代碼如下:$path = /usr/opt/../ect/abcd;echo $_SERVER['DOCUMENT_ROOT'].""; //獲得伺服器文檔根變數(取決於http.conf中的配置)echo $_SERVER['PHP_SELF'].""; //獲得執行該代碼的檔案的路徑,與http.conf中的配置有關係。echo __FILE__.""; //獲得檔案的檔案系統絕對路徑的變數echo
方法一:複製代碼 代碼如下:function unicode_encode($name){ $name = iconv('UTF-8', 'UCS-2', $name); $len = strlen($name); $str = ''; for ($i = 0; $i { $c = $name[$i]; $c2 = $name[$i + 1]; if (ord($c) > 0) { //兩個位元組的文字
CI預設的rewrite url中是類似這樣的,例如你的CI根目錄是在/CodeIgniter/下,你的下面的二級url就類似這樣http://localhost/CodeIgniter/index.php/welcome。不太好看,怎麼把其中的index.php取掉呢?1. 開啟apache的設定檔,conf/httpd.conf :LoadModule rewrite_module modules/mod_rewrite.so,把該行前的#去掉。搜尋 AllowOverride
前端開發工程師都知道javascript有編碼函數escape()和對應的解碼函數unescape(),而php中只有個urlencode和urldecode,這個編碼和解碼函數對encodeURI和encodeURIComponent有效,但是對escape的是無效的。javascript中的escape()函數和unescape()函數使用者字串編碼,類似於PHP中的urlencode()函數,下面是php實現的escape函數代碼:複製代碼 代碼如下:/** * js escape
資料放入資料庫和取出來顯示在頁面需要注意什麼 入庫時 $str=addslashes($str); $sql=\"insert into `tab` (`content`) values(\'$str\')\"; 出庫時 $str=stripslashes($str); 顯示時 $str=htmlspecialchars(nl2br($str)) ;
如果是在linux下, 首先確認是否添加 ob_start() 和 ob_flush().複製代碼 代碼如下:ob_start();for ($i=1; $i echo $i."\n"; ob_flush(); flush(); usleep(500000);}如果還是不能輸出的話, 就在代碼前面加上頭資訊複製代碼 代碼如下:header("Content-Type:text/html;charset=utf8;");ob_start();
採用js對URL中的漢字進行escape編碼。 這樣點選連結後的效時: 引用:http://127.0.0.1/shop/product_list.php?p_sort=PHP%u5F00%u53D1%u8D44%u6E90%u7F51產生了這樣的效果, 很明顯用PHP的urldecode()或者base64_decode()是無法反解的。 解決方案, 用PHP寫一個反解函數: 複製代碼 代碼如下:function js_unescape($str){ $ret = '';
gurl 要下載的圖片地址$rfurl 來路。如果靶心圖表像做了防盜鏈設定,可以繞過。$filename 下載圖片儲存的檔案名稱,相對路徑,不要用realpath$gcookie 調整cookie 偽造的cookie$JumpCount 跳轉計數$maxtime 最大次數調用方法:DownImageKeep(“http://www.baidu.com/img/baidu_jgylogo2.gif”,”http://baidu.com”,”a.gif”,”",0,10);複製代碼
複製代碼 代碼如下:$data = array("name" => "Hagrid", "age" => "36");$data_string = json_encode($data);$ch = curl_init('http://api.local/rest/users');curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string);curl_setopt(
對比起 Cookie,Session 是儲存在伺服器端的會話,相對安全,並且不像 Cookie 那樣有儲存長度限制,本文簡單介紹 Session 的使用。由於 Session 是以文字檔形式儲存在伺服器端的,所以不怕用戶端修改 Session 內容。實際上在伺服器端的 Session 檔案,PHP 自動修改 Session 檔案的許可權,只保留了系統讀和寫入權限,而且不能通過 ftp 修改,所以安全得多。對於 Cookie 來說,假設我們要驗證使用者是否登陸,就必須在 Cookie
(1)利用php提供的函數,array_unique和array_diff_assoc來實現複製代碼 代碼如下: function FetchRepeatMemberInArray($array) { // 擷取去掉重複資料的數組 $unique_arr = array_unique ( $array ); // 擷取重複資料的數組 $repeat_arr = array_diff_assoc ( $array, $unique_arr );
PHP現在推出5.3.0版本了,不過下載的時候有幾個不同版本選擇。那就是VC6 X86和VC9 X86。首先我來解答:VC6是什嗎?VC6就是legacy Visual Studio 6 compiler,就是使用這個編譯器編譯的。VC9是什嗎?VC9就是the Visual Studio 2008