Mysql數據庫安全性問題【防注入】

一、SQL注入實例


后臺的插入語句代碼:


$unsafe_variable = $_POST['user_input'];   
mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); 


當POST的內容為:


value'); DROP TABLE table;--


以上的整個SQL查詢語句變成:


INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')  




二、防止SQL注入措施



1.使用預處理語句和參數化查詢。(‘Use prepared statements and parameterized queries.’)?


SQL語句和查詢的參數分別發送給數據庫服務器進行解析。這種方式有2種實現:?


(1)使用PDO(PHP data object)


$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name'); 
$stmt->execute(array('name' => $name));  
foreach ($stmt as $row) { 
 // do something with $row  
}  


(2)使用MySQLi


$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');  $stmt->bind_param('s', $name);  
$stmt->execute();  
$result = $stmt->get_result();  
while ($row = $result->fetch_assoc()) {  
    // do something with $row  }  


2.對查詢語句進行轉義(最常見的方式)


$unsafe_variable = $_POST["user-input"];  
$safe_variable = mysql_real_escape_string($unsafe_variable); 
mysql_query("INSERT INTO table (column) VALUES ('" . $safe_variable . "')");  

$mysqli = new mysqli("server", "username", "password", "database_name");  
// TODO - Check that connection was successful.  
$unsafe_variable = $_POST["user-input"];  
$stmt = $mysqli->prepare("INSERT INTO table (column) VALUES (?)");  
// TODO check that $stmt creation succeeded  
// "s" means the database expects a string 
$stmt->bind_param("s", $unsafe_variable); 
$stmt->execute();  
$stmt->close();  
$mysqli->close();  


3.限制引入的參數


$orders  = array("name","price","qty"); //field names  
$key     = array_search($_GET['sort'],$orders)); // see if we have such a name  
$orderby = $orders[$key]; //if not, first one will be set automatically. smart enuf :)  
$query   = "SELECT * FROM `table` ORDER BY $orderby"; //value is safe  


4.對引入參數進行編碼


SELECT password FROM users WHERE name = 'root'            --普通方式  
SELECT password FROM users WHERE name = 0x726f6f74        --防止注入 
SELECT password FROM users WHERE name = UNHEX('726f6f74') --防止注入 
set @INPUT =  hex("%實驗%");  
select * from login where reset_passwd_question like unhex(@INPUT) ;  


轉自 :?http://blog.csdn.net/ty_hf/article/details/49076807?locationNum=14&fps=1

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282680.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282680.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282680.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unexpected end of JSON input while parsing near錯誤解決方式(網上的方法)

原本是想創建一個create-react-app來著,但是在創建的中間會出現Unexpected end of JSON input while parsing near... 的錯誤。 在網上找到了一些方法,首先是清空npm的緩存。 npm cache clean --force 氮素,然并卵。near后面的內容變化了一下…

解決Qt5 Creator無法切換輸入法(fcitx),Ubuntu中不能使用搜狗輸入法錄入漢字問題...

2016年6月8日修正,ubuntu 16.04 Qt5.7.0 以及 Qt5.6.1均測試通過在Qt5.3之前,我發布過解決辦法 解決Qt5 Creator無法切換輸入法(fcitx),不能錄入漢字問題,Qt5.4以及Qt5.5,舊辦法失效&#xff0c…

目前市場上用于個人計算機的硬盤尺寸是,第5章-硬盤(計算機組裝與維護).docx

ADDIN CNKISM.UserStyle一、選擇題1.磁盤存儲器的主要技術指標有多項,下面不屬于硬盤指標的是( )。A.存儲容量B.單碟容量C.轉速D.帶寬2.硬盤的平均尋道時間通常以毫秒為單位測量,是指( )。A.磁頭從一個柱面移到另一個隨機距離遠的柱面所需的平均時間B.…

Xmemcached學習筆記一(安裝memcached)

memcached有三種java客戶端 第一種:Com.danga 包下面的memcached,需引入jar(本人用的是memcached-2.5.2.jar 文末附上附件需要的可以下載) 第二種:spyMemcached 第三種:XMemcached 據說第三種是使用最簡單,最好用的&a…

WrapPanel 實現虛擬化

WrapPanel 實現虛擬化控件名:VirtualizingWrapPanel作者:WPFDevelopersOrg原文鏈接: https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40;Visual Studio 2022;項目使用 MIT 開源許可協議;眾…

pdo連接mysql數據庫(簡潔明了)

一 實例化pdo對象 $dsn "mysql:dbnametest;host127.0.0.1"; $pdo new PDO($dsn,root,root);二 數據查詢 1、如果不根據用戶傳過來的值進行操作,可以直接query sql $dsn "mysql:dbnametest;host127.0.0.1"; $pdo new PDO($dsn,root,root); $sql &qu…

一次微信小程序的快速開發體驗

起因 事情是這樣的 一天早上組里還早激烈的討論某個項目的可用性和發展前景,突然老大說了句,能不能做個小程序的版本呢?然后大家紛紛討論起來,有反對有支持,我就說了一句,剛出來的時候搞過一會。。。然后就…

造數據時踏過的坑

1.在產生隨機數時,在數據規模很大的時候很難出現自己要的模型,比如某個條件的數據量,此時要寫一個方法,來造一批這樣的數據 2.將控制數量,文件路徑寫成配置文件的形式,以免重復打包 3.輸入輸出文件夾,可以配置以免重復打包 轉載于:https://www.cnblogs.com/rocky-AGE-24/p/7376…

如何證明 ConcurrentDictionary 字典操作不全是線程安全的

前言最近,看到一篇文章,講到《ConcurrentDictionary字典操作竟然不全是線程安全的?》。首先,這個結論是正確的,但文中給出的一個證明例子,我覺得是有問題的。相關代碼如下:using System.Collect…

微型計算機及接口技術試題,1月自考微型計算機及其接口技術試題及答案解析...

《1月自考微型計算機及其接口技術試題及答案解析》由會員分享,可在線閱讀,更多相關《1月自考微型計算機及其接口技術試題及答案解析(11頁珍藏版)》請在人人文庫網上搜索。1、精品自學考試資料推薦全國 2018年 1月自考微型計算機及其接口技術試題課程代碼…

16-djongo中間件學習

目錄 前戲 我們在前面的課程中已經學會了給視圖函數加裝飾器來判斷是用戶是否登錄,把沒有登錄的用戶請求跳轉到登錄頁面。我們通過給幾個特定視圖函數加裝飾器實現了這個需求。但是以后添加的視圖函數可能也需要加上裝飾器,這樣是不是稍微有點繁瑣。 學完…

PHP基礎(必須熟練掌握的基礎)

<?php/*** 三元運算符的應用*/ /* $a 10; $b 15; echo $a > $b ? 1 : 0; */ // 注:php7新添加的運算符比較運算符x<>y // 如果x和y相等,就返回0,如果x>y,就返回1,如果x的值小于y,就返回-1/* $a "aaa"; $b "bbb"; echo $a.$b; *//*** …

子進程無法從標準輸入讀取數據

每個process對象最多只能調用一次start()方法&#xff0c;join([timeout])方法會阻塞調用process對象的進程&#xff0c;直到timeout時間超時&#xff0c;或者process進程退出。如果timeout設置為None&#xff0c;則無超時時間。對于linux操作系統的進程管理&#xff0c;父進程…

Eclipse控制項目的訪問名稱

Eclipse控制web項目的訪問名稱 web項目的訪問路徑&#xff08;名稱&#xff09;修改 1.點擊項目右鍵-》properties找到Context root 修改成我們需要的名字即可轉載于:https://www.cnblogs.com/pypua/articles/7379950.html

計算機一級選擇題已做完確認,計算機一級選擇題(附答案)

點擊藍字關注我們(1)按照需求功能的不同&#xff0c;信息系統已形成各種層次&#xff0c;計算機應用于管理是開始于:()A)信息處理B)人事管理C)決策支持D)事務處理正確答案&#xff1a;A解析&#xff1a;計算機用于管理&#xff0c;起源于計算機在辦公應用中對大量信息、數據的處…

參加51CTO培訓,PMP考試通過啦

為什么選擇考PMP&#xff1f;先介紹下自己的情況&#xff0c;畢業三年&#xff0c;單位類似于平臺&#xff0c;不做技術&#xff0c;常態的工作是文案、商務、市場都會涉及些&#xff0c;對未來也有些迷茫。受前輩點撥可以學一些通用的技能&#xff0c;于是我選擇了PMP&#xf…

如何查看服務器并發請求連接數

https://wenku.baidu.com/view/fb553d795acfa1c7aa00cc27?pcf2#1 轉載于:https://www.cnblogs.com/linewman/p/9918760.html

C# 二十年語法變遷之 C# 5 和 C# 6參考

C# 二十年語法變遷之 C# 5 和 C# 6參考https://benbowen.blog/post/two_decades_of_csharp_ii/自從 C# 于 2000 年推出以來&#xff0c;該語言的規模已經大大增加&#xff0c;我不確定任何人是否有可能在任何時候都對每一種語言特性都有深入的了解。因此&#xff0c;我想寫一系…

非涉密計算機檢查的通知,關于開展非涉密計算機及可移動存儲介質專項清理活動的緊急通知...

關于在全校范圍內開展非涉密計算機及可移動存儲介質專項清理活動的緊急通知密辦字[2009]01號各單位&#xff1a;為有效遏制木馬病毒和惡意代碼的蔓延趨勢&#xff0c;現在校內開展一次非涉密計算機及可移動存儲介質的專項清理活動&#xff0c;要求如下&#xff1a;1、所有涉密人…

Spring Cloud構建微服務架構:服務消費(基礎)

使用LoadBalancerClient在Spring Cloud Commons中提供了大量的與服務治理相關的抽象接口&#xff0c;包括DiscoveryClient、這里我們即將介紹的LoadBalancerClient等。對于這些接口的定義我們在上一篇介紹服務注冊與發現時已經說過&#xff0c;Spring Cloud做這一層抽象&#x…