『壹』 php中有什麼好的代碼自動檢查工具嗎
通常的PHP集成開發軟體,如 PhpDesigner 、 Zend Studio、Eclipse 等等都內置有代碼檢查工具。如果想在外部進行PHP代碼檢查,可以參考以下資料: PHP Mess Detector( PHP項目體檢工具,根據你設定的標准(如單一文件代碼體積,未使用的參數個數,未使用的方法數)檢查PHP代碼,超出設定的標准時報警。 PHP Copy Paste Detector( 顧名思義,檢查冗餘代碼的 PHP Dead Code Detector( 看名字就知道了,檢查從未被調用過的方法 PHP Code Sniffer( 老牌代碼格式化工具,PHP寫的,Pear包,可自己hack,可集成到命令行里。 PHP Code Beautifier,只有Windows GUI,Windows CMD很難用
『貳』 PHP如何獲得伺服器時間
<?php
//首先設置時區為東八區,也就是我國的標准時間所在區。Asia/Hong_Kong、Asia/Shanghai(上海)或Asia/Urumqi(烏魯木齊)等,都是東八區的時間。設置為其中的一種都可以
date_default_timezone_set('Asia/Shanghai');
//獲取當前伺服器時間
$time=date('Y-m-dH:i:s',time());
?>
『叄』 php讀取文本文件內容~
示例代碼1: 用file_get_contents 以get方式獲取內容
代碼如下:
<?php
$url='';
$html=file_get_contents($url);
//print_r($http_response_header);
ec($html);
printhr();
printarr($http_response_header);
printhr();
?>
示例代碼2: 用fopen打開url, 以get方式獲取內容
代碼如下:
<?
$fp=fopen($url,'r');
printarr(stream_get_meta_data($fp));
printhr();
while(!feof($fp)){
$result.=fgets($fp,1024);
}
echo"url body:$result";
printhr();
fclose($fp);
?>
示例代碼3:用file_get_contents函數,以post方式獲取url
代碼如下:
<?php
$data=array('foo'=>'bar');
$data=http_build_query($data);
$opts=array(
'http'=>array(
'method'=>'POST',
'header'=>"Content-type: application/x-www-form-urlencodedrn".
"Content-Length: ".strlen($data)."rn",
'content'=>$data
),
);
$context=stream_context_create($opts);
$html=file_get_contents('',false,$context);
echo$html;
?>
示例代碼4:用fsockopen函數打開url,以get方式獲取完整的數據,包括header和body
代碼如下:
<?
functionget_url($url,$cookie=false){
$url=parse_url($url);
$query=$url[path]."?".$url[query];
ec("Query:".$query);
$fp=fsockopen($url[host],$url[port]?$url[port]:80,$errno,$errstr,30);
if(!$fp){
returnfalse;
}else{
$request="GET$queryHTTP/1.1rn";
$request.="Host:$url[host]rn";
$request.="Connection: Closern";
if($cookie)$request.="Cookie:$cookien";
$request.="rn";
fwrite($fp,$request);
while(!@feof($fp)){
$result.=@fgets($fp,1024);
}
fclose($fp);
return$result;
}
}
//獲取url的html部分,去掉header
functionGetUrlHTML($url,$cookie=false){
$rowdata=get_url($url,$cookie);
if($rowdata)
{
$body=stristr($rowdata,"rnrn");
$body=substr($body,4,strlen($body));
return$body;
}
returnfalse;
}
?>
示例代碼5:用fsockopen函數打開url,以POST方式獲取完整的數據,包括header和body
代碼如下:
<?
functionHTTP_Post($URL,$data,$cookie,$referrer=""){
// parsing the given URL
$URL_Info=parse_url($URL);
// Building referrer
if($referrer=="")// if not given use this script. as referrer
$referrer="111";
// making string from $data
foreach($dataas$key=>$value)
$values[]="$key=".urlencode($value);
$data_string=implode("&",$values);
// Find out which port is needed - if not given use standard (=80)
if(!isset($URL_Info["port"]))
$URL_Info["port"]=80;
// building POST-request:
$request.="POST ".$URL_Info["path"]." HTTP/1.1n";
$request.="Host: ".$URL_Info["host"]."n";
$request.="Referer:$referern";
$request.="Content-type: application/x-www-form-urlencodedn";
$request.="Content-length: ".strlen($data_string)."n";
$request.="Connection: closen";
$request.="Cookie:$cookien";
$request.="n";
$request.=$data_string."n";
$fp=fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp,$request);
while(!feof($fp)){
$result.=fgets($fp,1024);
}
fclose($fp);
return$result;
}
printhr();
?>
示例代碼6:使用curl庫,使用curl庫之前,你可能需要查看一下php.ini,查看是否已經打開了curl擴展
代碼如下:
<?
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>
關於curl庫:
curl官方網站
curl 是使用URL語法的傳送文件工具,支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL證書、HTTP POST、HTTP PUT 、FTP 上傳,kerberos、基於HTT格式的上傳、代理、cookie、用戶+口令證明、文件傳送恢復、http代理通道和大量其他有用的技巧
代碼如下:
<?
functionprintarr(array$arr)
{
echo"<br> Row field count: ".count($arr)."<br>";
foreach($arras$key=>$value)
{
echo"$key=$value <br>";
}
}
?>
『肆』 有沒有 php 代碼審計的工具
具體代碼如下:
<?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>
PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。
它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,
執行效率比完全生成HTML標記的CGI要高許多;
PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
你可以去後盾人平台看看,裡面有很多學習視頻還有線上直播
『伍』 代碼審計是什麼
代碼審計有什麼好處
代碼審計指的156是檢查源代碼中的安全缺陷6991,檢查程序源代碼是否存在安全隱患3780,或者有編碼不規范的地方,通過自動化工具或者人工審查的方式,對程序源代碼逐條進行檢查和分析。
代碼審計是一種以發現程序錯誤,安全漏洞和違反程序規范為目標的源代碼分析,能夠找到普通安全測試所無法發現的安全漏洞。
那麼,為什麼需要做代碼審計?代碼審計能帶來什麼好處?
99%的大型網站以及系統都被拖過庫,泄漏了大量用戶數據或系統暫時癱瘓,近日,英國機場遭勒索軟體襲擊,航班信息只能手寫。
提前做好代碼審計工作,非常大的好處就是將先於黑客發現系統的安全隱患,提前部署好安全防禦措施,保證系統的每個環節在未知環境下都能經得起黑客挑戰,進一步鞏固客戶對企業及平台的信賴。
通常來說,「黑客」可以利用的漏洞無非有以下幾個方面:
1. 軟體編寫存在bug
2. 系統配置不當
3. 口令失竊
4. 嗅探未加密通訊數據
5. 設計存在缺陷
6. 系統攻擊
大家可能就會問了,哪些業務場景需要做好代碼審計工作?小型公司的官需要做嗎?
代碼審計的對象主要是PHP、JAVA、asp、.NET等與Web相關的語言,需要做代碼審計的業務場景大概分為以下五個:
1. 即將上線的新系統平台;
2. 存在大量用戶訪問、高可用、高並發請求的網站;
3. 存在用戶資料等敏感機密信息的企業平台;
4. 互聯網金融類存在業務邏輯問題的企業平台;
5. 開發過程中對重要業務功能需要進行局部安全測試的平台;
通常說的整體代碼審計和功能點人工代碼審計區別嗎?
整體代碼審計是指代碼審計服務人員對被審計系統的所有源代碼進行整體的安全審計,代碼覆蓋率為100%,整體代碼審計採用源代碼掃描和人工分析確認相結合的方式進行分析,發現源代碼存在的安全漏洞。但整體代碼審計屬於白盒靜態分析,僅能發現代碼編寫存在的安全漏洞,無法發現業務功能存在的缺陷。
整體代碼審計付出的時間、代價很高,也很難真正讀懂這一整套程序,更難深入了解其業務邏輯。這種情況下,根據功能點定向審計、通過工具做介面測試等,能夠提高審計速度,更適合企業使用。
功能點人工代碼審計是對某個或某幾個重要的功能點的源代碼進行人工代碼審計,發現功能點存在的代碼安全問題,能夠發現一些業務邏輯層面的漏洞。功能點人工代碼審計需要收集系統的設計文檔、系統開發說明書等技術資料,以便代碼審計服務人員能夠更好的了解系統業務功能。由於人工代碼審計工作量極大,所以需要分析並選擇重要的功能點,有針對性的進行人工代碼審計。
安全的安全工程師都具備多年代碼審計經驗,首先通覽程序的大體代碼結構,在根據文件的命名第一時間辨識核心功能點、重要介面。下面就介紹幾個功能、介面經常會出現的漏洞:
1. 登陸認證
a. 任意用戶登錄漏洞
b. 越權漏洞
2. 找回密碼
a. 驗證碼爆破漏洞
b. 重置管理員密碼漏洞
3. 文件上傳
a. 任意文件上傳漏洞
b. SQL注仿源入漏洞
4. 在線支付,多為邏輯漏洞
a. 支付過程中可直接修改數據包中的支付金額
b. 沒有對購買數量進行負數限制
c. 請求重訪
d. 其他參數干擾
5. 介面漏洞
a. 操作資料庫的介面要防止sql注入
b. 對外暴露的介面要注意認證安全
經過高級頃者安全工程師測試加固後的系統會變得更加穩定、安全,測試後的報告可以幫助管理人員進行更好的項目決策,同時證明雀大薯增加安全預算的必要性,並將安全問題傳達到高級管理層,進行更好的安全認知,有助於進一步健全安全建設體系,遵循了相關安全策略、符合安全合規的要求。