Time of Update: 2017-01-13
1、php提交資料過濾的基本原則 1)提交變數進資料庫時,我們必須使用addslashes()進行過濾,像我們的注入問題,一個addslashes()也就搞定了。其實在涉及到變數取值時,intval()函數對字串的過濾也是個不錯的選擇。2)在php.ini中開啟magic_quotes_gpc和magic_quotes_runtime。magic_quotes_gpc可以把get,post,cookie裡的引號變為斜杠。magic_quotes_runtime對於進出資料庫的資料可以起
Time of Update: 2017-01-13
以下代碼實現過濾php的$_GET 和$_POST參數 代碼如下複製代碼 /*** 安全防範*/function Add_S($array){foreach($array as $key=>$value){if(!is_array($value)){$value =
Time of Update: 2017-01-13
那麼我們如果在我們提交的資料中進行過濾是不是能夠避免這些問題呢?於是我們使用正則就構建如下函數: 代碼如下複製代碼 /*函數名稱:inject_check()函數作用:檢測提交的值是不是含有SQL注射的字元,防止注射,保護伺服器安全參 數:$sql_str: 提交的變數返 回 值:返回檢測結果,ture or
Time of Update: 2017-01-13
代碼如下複製代碼 <?php // 說明:PHP 寫的加密函數,支援私人密鑰 function keyED($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ""; for
Time of Update: 2017-01-13
base64_decode將 BASE64 編碼字串解碼。文法: string base64_decode(string encoded_data);傳回值: 字串函數種類: 編碼處理 內容說明本函數將以 MIME BASE64 編碼字串解碼。解碼後的字串可能為中文字串或其它的二進位資料。例 代碼如下複製代碼 <?php$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';echo base64_decode($str)
Time of Update: 2017-01-13
我們php手手工安裝的,php的預設設定檔在 /usr/local/apache2/conf/php.ini,我們最主要就是要配置php.ini中的內容,讓我們執行php能夠更安全。整個PHP中的安全設定主要是為了防止phpshell和SQL Injection的攻擊,一下我們慢慢探討。我們先使用任何編輯工具開啟/etc/local/apache2/conf/php.ini,如果你是採用其他方式安裝,設定檔可能不在該目錄。(1) 開啟php的安全模式php的安全模式是個非常重要的內嵌的安全機制,
Time of Update: 2017-01-13
PHP包括其他任何網路程式設計語言的安全性,具體表現在本地安全性和遠程安全性兩個方面,這裡我們應該養成如下的幾個習慣確保我們的PHP程式本身是安全的。1、
Time of Update: 2017-01-13
下面代碼儲存成MD5Crypt.class.php檔案 代碼如下複製代碼 <?php class MD5Crypt { /** * Enter description here ... * @param unknown_type $str * @return string */ public final static function mdsha($str) { $code = substr ( md5 ( $str ), 10 ); $code .= substr (
Time of Update: 2017-01-13
代碼如下複製代碼 代碼如下:<?php /* 網站驗證碼程式 * 運行環境: PHP5.0.18 下調試通過 * 需要 gd2 圖形庫支援(PHP.INI中 php_gd2.dll開啟) * 檔案名稱:
Time of Update: 2017-01-13
session 跟蹤,可以很方便地避免上述情況的發生:<?php教程 session_start(); $clean = array(); $email_pattern = '/^[^@s<&>]+@([-a-z0-9]+.)+[a-z]{2,}$/i'; if (preg_match($email_pattern, $_POST['email'])) { $clean['email'] = $_POST['email']; $user =
Time of Update: 2017-01-13
import os import sys import re import time def listdir(dirs,liston='0'): flog = open(os.getcwd()+"/check_php教程_shell.log","a+") if not os.path.isdir(dirs): print "directory %s is not exist"% (dirs) return lists =
Time of Update: 2017-01-13
雖然說md5的密文是有限的,不過其數量為6.3340286662973277706162286946812e+49
Time of Update: 2017-01-13
1. php教程 設定檔 php.ini 中的 magic_quotes_gpc 選項沒有開啟,被置為 off 2. 開發人員沒有對資料類型進行檢查和轉義不過事實上,第二點最為重要。我認為, 對使用者輸入的資料類型進行檢查,向 mysql教程 提交正確的資料類型,這應該是一個 web 程式員最最基本的素質。但現實中,常常有許多小白式的 web 開發人員忘了這點, 從而導致後門大開。為什麼說第二點最為重要?因為如果沒有第二點的保證,magic_quotes_gpc
Time of Update: 2017-01-13
為了安全,我們常用到下面的函數來過濾一些傳遞過來的非法字元:PHP防注入函數 代碼如下複製代碼
Time of Update: 2017-01-13
<?php教程 /************************* 說明: 判斷傳遞的變數中是否含有非法字元 如$_post、$_get 功能: 防注入 **************************/ //要過濾的非法字元 這個過濾的字元 還可以增加 $arrfiltrate=array("'",";","union"); //出錯後要跳轉的url,不填則預設前一頁
Time of Update: 2017-01-13
當然addslashes也不是毫無用處,它是用於單位元組字串的處理,多位元組字元還是用mysql_real_escape_string吧。開啟magic_quotes_gpc來防止SQL注入php.ini中有一個設定:magic_quotes_gpc = Off 這個預設是關閉的,如果它開啟後將自動把使用者提交對sql的查詢進行轉換, 比如把 ' 轉為 '等,對於防止sql注射有重大作用。
Time of Update: 2017-01-13
驗證碼識別一般分為以下幾個步驟:1. 取出字模2. 二值化3. 計算特徵4. 對照樣本 代碼如下複製代碼 function _code($_code_length = 4, $_width = 75, $_height = 25){ for($i=0;$i<$_code_length;$i++){ $_nmsg .= dechex(mt_rand(0,
Time of Update: 2017-01-13
function d_htmlspecialchars($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = d_htmlspecialchars($val); } } else { $string = str_replace('&', '&', $string); $string = str_replace('"', '"',
Time of Update: 2017-01-13
function phps教程ql_show($str){ $str = stripslashes($str); $str = str_replace("\", "", $str); $str = str_replace("/", "/", $str); $str = str_replace(" ",
Time of Update: 2017-01-13
phpize是用來擴充php擴充模組的,通過phpize可以建立php的外掛模組下面以安裝openssl為例找到源碼包的ext檔案夾,進入後找到openssl目錄執行如下命令: 代碼如下複製代碼 cp config0.m4 config.m4/usr/local/php5/bin/phpize./configure –with-php-config=/usr/local/php5/bin/php-configmakemake install