當前位置:首頁 » 編程語言 » php網站注入

php網站注入

發布時間: 2022-07-11 20:38:29

1. php代碼網站如何防範sql注入漏洞攻擊建議分享

做為網路開發者的你對這種黑客行為恨之入骨,當然也有必要了解一下SQL注入這種功能方式的原理並學會如何通過代碼來保護自己的網站資料庫。今天就通過PHP和MySQL資料庫為例,分享一下我所了解的SQL注入攻擊和一些簡單的防範措施和一些如何避免SQL注入攻擊的建議。
簡單來說,SQL注入是使用代碼漏洞來獲取網站或應用程序後台的SQL資料庫中的數據,進而可以取得資料庫的訪問許可權。比如,黑客可以利用網站代碼的漏洞,使用SQL注入的方式取得一個公司網站後台資料庫里所有的數據信息。拿到資料庫管理員登錄用戶名和密碼後黑客可以自由修改資料庫中的內容甚至刪除該資料庫。SQL注入也可以用來檢驗一個網站或應用的安全性。SQL注入的方式有很多種,但本文將只討論最基本的原理,我們將以PHP和MySQL為例。本文的例子很簡單,如果你使用其它語言理解起來也不會有難度,重點關注SQL命令即可。
一個簡單的SQL注入攻擊案例
假如我們有一個公司網站,在網站的後台資料庫中保存了所有的客戶數據等重要信息。假如網站登錄頁面的代碼中有這樣一條命令來讀取用戶信息。
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.$_GET['username'].
"
'
AND
`password`=
'
"
.$_GET['password'].
"
'
";?>現在有一個黑客想攻擊你的資料庫,他會嘗試在此登錄頁面的用戶名的輸入框中輸入以下代碼:
'
;
SHOW
TABLES;
點擊登陸鍵,這個頁面就會顯示出資料庫中的所有表。如果他現在使用下面這行命令:
';
DROP
TABLE
[table
name];
這樣他就把一張表刪除了!
防範SQL注入
-
使用mysql_real_escape_string()函數
在資料庫操作的代碼中用這個函數mysql_real_escape_string()可以將代碼中特殊字元過濾掉,如引號等。如下例:
$q
=
"SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.mysql_real_escape_string(
$_GET['username']
).
"
'
AND
`password`=
'
"
.mysql_real_escape_string(
$_GET['password']
).
"
'
";?>防範SQL注入
-
使用mysql_query()函數
mysql_query()的特別是它將只執行SQL代碼的第一條,而後面的並不會執行。回想在最前面的例子中,黑客通過代碼來例後台執行了多條SQL命令,顯示出了所有表的名稱。所以mysql_query()函數可以取到進一步保護的作用。我們進一步演化剛才的代碼就得到了下面的代碼:
//connection
$database
=
mysql_connect("localhost",
"username","password");
//db
selection
$q
=
mysql_query("SELECT
`id`
FROM
`users`
WHERE
`username`=
'
"
.mysql_real_escape_string(
$_GET['username']
).
"
'
AND
`password`=
'
"
.mysql_real_escape_string(
$_GET['password']
).
"
'
",
$database);?>除此之外,我們還可以在PHP代碼中判斷輸入值的長度,或者專門用一個函數來檢查輸入的值。所以在接受用戶輸入值的地方一定要做好輸入內容的過濾和檢查。當然學習和了解最新的SQL注入方式也非常重要,這樣才能做到有目的的防範。如果使用的是平台式的網站系統如Wordpress,要注意及時打上官方的補丁或升級到新的版本。

2. 用什麼工具檢測php網站是否存在注入漏洞

PHP的安全性現在是越來越好了PHP6。0版本都把存在的SQL漏洞都解決了
但是為了安全起見還是應該做安全檢測
檢測方法:SQL 注入法 、腳本代碼、參數傳遞等方法 具體情況參看PHP官方網站 安全篇章

3. php網站有get注入和post注入嗎

php網站,get和post注入還是很多的
比如 sql注入,xss跨站腳本攻擊等

4. 偽靜態php網站該如何注入滲透,求大神告知,解答下

thinkphp漏洞還是蠻多的~ 首先你要知道thinkphp的運行方法而不是盲目的去注入

比如Home/Login/index.html

Home/Login/index/ID/1

5. 入侵php網站無法查詢注入點怎麼辦

如 有一個 用戶筐和一個密碼
判斷 資料庫中的 SQL語句大多數人是這樣寫的
Select * from 用戶表 Where 用戶名=用戶名表單提交過來的值 and 密碼=用戶密碼表單提交過來的值
如果黑客 在 用戶名中輸入 任意字元 如 2323
Select * from 用戶表 Where 用戶名=2323 and 密碼=232 OR 1=1
這樣 用戶就無條件接受這個數據成立 結果變是最前一條數據 而且經常是最高用戶這個也是程序員經常放的錯誤~

6. 請教PHP網站SQL注入防禦問題

把你的sql語句找出來,然後找到select
id
from
table
where
a='*';這樣的語句;
這樣的語句就是有注入可能的地方,有二種解決方案:
1、寫存儲過程,所有條件以參數形式傳遞,這個可以有效的防範注入;
2、sprintf("select
id
from
table
where
a=%s",a);這個也行,就是將注入條件都當成字元處理來防範注入攻擊。

7. php網站在檢測時總是提示網站存在sql注入漏洞

sql 注入的問題,是利用sql本身的漏洞來爆庫的啊,防止sql注入,主要是在接到的數據入庫的時候,把數據進行過濾即可,mysql_real_escape_string(),php.ini中的magic_quotes_gpc,magic_quotes_runtime參數(盡量不要使用),addslashes(),htmlspecialchars()也可以的,可以過濾一些字元串等,如果接到的只為整型可用intval(),其實sql注入,主要是防止一些特殊字元,例如:*,-,<,>等等

8. PHP網站怎麼sql注入有沒有破解防禦的方法

網站的運行安全肯定是每個站長必須考慮的問題,大家知道,大多數黑客攻擊網站都是採用sql注入,這就是我們常說的為什麼最原始的靜態的網站反而是最安全的。 今天我們講講PHP注入的安全規范,防止自己的網站被sql注入。
如今主流的網站開發語言還是php,那我們就從php網站如何防止sql注入開始說起:
Php注入的安全防範通過上面的過程,我們可以了解到php注入的原理和手法,當然我們也同樣可以制定出相應該的防範方法:
首先是對伺服器的安全設置,這里主要是php+mysql的安全設置和linux主機的安全設置。對php+mysql注射的防範,首先將magic_quotes_gpc設置為On,display_errors設置為Off,如果id型,我們利用intval()將其轉換成整數類型,如代碼:
$id=intval($id);
mysql_query=」select *from example where articieid=』$id』」;或者這樣寫:mysql_query(」SELECT * FROM article WHERE articleid=」.intval($id).」")
如果是字元型就用addslashes()過濾一下,然後再過濾」%」和」_」如:
$search=addslashes($search);
$search=str_replace(「_」,」\_」,$search);
$search=str_replace(「%」,」\%」,$search);
當然也可以加php通用防注入代碼:
/*************************
PHP通用防注入安全代碼
說明:
判斷傳遞的變數中是否含有非法字元
如$_POST、$_GET
功能:
防注入
**************************/
//要過濾的非法字元
$ArrFiltrate=array(」『」,」;」,」union」);
//出錯後要跳轉的url,不填則默認前一頁
$StrGoUrl=」";
//是否存在數組中的值
function FunStringExist($StrFiltrate,$ArrFiltrate){
foreach ($ArrFiltrate as $key=>$value){
if (eregi($value,$StrFiltrate)){
return true;
}
}
return false;
}
//合並$_POST 和 $_GET
if(function_exists(array_merge)){
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS);
}else{
foreach($HTTP_POST_VARS as $key=>$value){
$ArrPostAndGet[]=$value;
}
foreach($HTTP_GET_VARS as $key=>$value){
$ArrPostAndGet[]=$value;
}
}
//驗證開始
foreach($ArrPostAndGet as $key=>$value){
if (FunStringExist($value,$ArrFiltrate)){
echo 「alert(/」Neeao提示,非法字元/」);」;
if (empty($StrGoUrl)){
echo 「history.go(-1);」;
}else{
echo 「window.location=/」".$StrGoUrl.」/」;」;
}
exit;
}
}
?>
/*************************
保存為checkpostandget.php
然後在每個php文件前加include(「checkpostandget.php「);即可
**************************/
另外將管理員用戶名和密碼都採取md5加密,這樣就能有效地防止了php的注入。
還有伺服器和mysql也要加強一些安全防範。
對於linux伺服器的安全設置:
加密口令,使用「/usr/sbin/authconfig」工具打開密碼的shadow功能,對password進行加密。
禁止訪問重要文件,進入linux命令界面,在提示符下輸入:
#chmod 600 /etc/inetd.conf //改變文件屬性為600
#chattr +I /etc/inetd.conf //保證文件屬主為root
#chattr –I /etc/inetd.conf // 對該文件的改變做限制
禁止任何用戶通過su命令改變為root用戶
在su配置文件即/etc/pam.d/目錄下的開頭添加下面兩行:
Auth sufficient /lib/security/pam_rootok.so debug
Auth required /lib/security/pam_whell.so group=wheel
刪除所有的特殊帳戶
#userdel lp等等 刪除用戶
#groupdel lp等等 刪除組
禁止不使用的suid/sgid程序
#find / -type f \(-perm -04000 - o –perm -02000 \) \-execls –lg {} \;

9. PHP代碼網站如何防範SQL注入漏洞攻擊建議

說到安全就不得不說到SQL注入攻擊(SQL Injection)。黑客通過SQL注入攻擊可以拿到網站資料庫的訪問許可權,之後他們就可以拿到網站資料庫中所有的數據,惡意的黑客可以通過SQL注入功能篡改資料庫中的數據甚至會把資料庫中的數據毀壞掉。做為網路開發者的你對這種黑客行為恨之入骨,當然也有必要了解一下SQL注入這種功能方式的原理並學會如何通過代碼來保護自己的網站資料庫。今天就通過PHP和MySQL資料庫為例,分享一下我所了解的SQL注入攻擊和一些簡單的防範措施和一些如何避免SQL注入攻擊的建議。什麼是SQL注入(SQL Injection)?簡單來說,SQL注入是使用代碼漏洞來獲取網站或應用程序後台的SQL資料庫中的數據,進而可以取得資料庫的訪問許可權。比如,黑客可以利用網站代碼的漏洞,使用SQL注入的方式取得一個公司網站後台資料庫里所有的數據信息。拿到資料庫管理員登錄用戶名和密碼後黑客可以自由修改資料庫中的內容甚至刪除該資料庫。SQL注入也可以用來檢驗一個網站或應用的安全性。SQL注入的方式有很多種,但本文將只討論最基本的原理,我們將以PHP和MySQL為例。本文的例子很簡單,如果你使用其它語言理解起來也不會有難度,重點關注SQL命令即可。一個簡單的SQL注入攻擊案例假如我們有一個公司網站,在網站的後台資料庫中保存了所有的客戶數據等重要信息。假如網站登錄頁面的代碼中有這樣一條命令來讀取用戶信息。$q = "SELECT `id` FROM `users` WHERE `username`= ' " .$_GET['username']. " ' AND `password`= ' " .$_GET['password']. " ' ";?>現在有一個黑客想攻擊你的資料庫,他會嘗試在此登錄頁面的用戶名的輸入框中輸入以下代碼:' ; SHOW TABLES;點擊登陸鍵,這個頁面就會顯示出資料庫中的所有表。如果他現在使用下面這行命令:'; DROP TABLE [table name];這樣他就把一張表刪除了!當然,這只是一個很簡單的例子,實際的SQL注入方法比這個要復雜得多,黑客也願意花大量的時間來不斷嘗試來攻擊你的代碼。有一些程序軟體也可以自動地來不斷嘗試SQL注入攻擊。了解了SQL注入的攻擊原理後,我們來看一下如何防範SQL注入攻擊。防範SQL注入 - 使用mysql_real_escape_string()函數在資料庫操作的代碼中用這個函數mysql_real_escape_string()可以將代碼中特殊字元過濾掉,如引號等。如下例:$q = "SELECT `id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET['password'] ). " ' "; ?>防範SQL注入 - 使用mysql_query()函數mysql_query()的特別是它將只執行SQL代碼的第一條,而後面的並不會執行。回想在最前面的例子中,黑客通過代碼來例後台執行了多條SQL命令,顯示出了所有表的名稱。所以mysql_query()函數可以取到進一步保護的作用。我們進一步演化剛才的代碼就得到了下面的代碼://connection$database = mysql_connect("localhost", "username","password");//db selectionmysql_select_db("database", $database);$q = mysql_query("SELECT `id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET['password'] ). " ' ", $database); ?>除此之外,我們還可以在PHP代碼中判斷輸入值的長度,或者專門用一個函數來檢查輸入的值。所以在接受用戶輸入值的地方一定要做好輸入內容的過濾和檢查。當然學習和了解最新的SQL注入方式也非常重要,這樣才能做到有目的的防範。如果使用的是平台式的網站系統如Wordpress,要注意及時打上官方的補丁或升級到新的版本。[除非註明,tech迷文章均為原創,轉載請以鏈接形式標明本文地址]

10. 代碼是通過uc瀏覽器,對php網站的sql注入嗎

首先要解釋一下什麼是注入(inject),因為動態網站多少會涉及到資料庫操作,如果我有一個頁面atricle.php 它需要獲取一個參數id -> article.php?cat=recent
網站後台邏輯就是截取這個GET上來的cat,然後把這個id帶入sql查詢。
$cat = $_GET['cat']$sql = "select * from article where 'cat' = '$cat'"

我們查詢語句可能是這樣的
select * from article where 'cat' = 'recent'
正常用戶訪問的情況下是沒有問題,那麼要是別人對id這個參數動手腳,同時網站又沒有做相關的限制(magic_quotes_gpc = off )
我們可以構造URL : article.php?cat=recent' union select * from user where 'username' = 'test
這個時候 網站GET到的cat就會變成recent' union select * from user'
sql語句就會變成
select * from article where 'cat' = 'recent' union select * from user where 'username' = 'test'

這樣就會導致user表泄露
大概理解了原理之後Sebug說faq.php有注入漏洞,那麼就是faq.php在處理接收數據的時候沒有做處理。(防範SQL注入的方法有很多,常見的是特殊字元轉義,即是把一些SQL關鍵字轉義為空或者其他的)
然後文章說的UC_KEY不是指UC瀏覽器,而是UCenter旗下的軟體
恩,大概就是這樣了,希望對題主有幫助。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:232
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:532
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726