3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
SQL Injection 常見的駭客攻擊方式 資料來源:http://www.puritys.me/docs-blog/article-11-SQL-Injection-常見的駭客攻擊方式.html Sql Injection 應該可以說是目前網路上,駭客最常用的攻擊方式,因為攻擊方式簡單,又不需要使用任何軟體,或是自行撰寫程式。講到 SQL,就要提到資料庫,大多數的網站都會安裝資料庫伺服器(Database),其實 Database 並不是什麼可怕的東西,Database 的功能就是將資料依序儲存下來,然後以最快的速度,找出你想要的資料,而在尋找資料之前,你必須輸入 Database 指令,你輸入的這串指令,我們就稱為 SQL 語法。 Sql Injection 就是指 SQL 語法上的漏洞,藉由特殊字元,改變語法上的邏輯,駭客就能取得資料庫的所有內容,當然也包含了會員的帳號,密碼,下面就舉一個SQL登入漏洞: 一個有會員登入功能的網站,都會需要輸入帳號與密碼來進行驗證 而後端程式,如 PHP 就必需支援相關的登入檢查,判定 User 輸入的帳號、密碼是否正確,來確定登入是否成功 ,PHP 執行的 SQL 語法如下,這是一個簡單的 SQL 語法,主要功能是從 members 這個資料表中,取出符合 User 所輸入帳號與密碼的會員資料。 select * from members where account=’$name’ and password=’$password’ 但若是駭客輸入有特殊字元的帳號:「 ‘ or 1=1 /* 」,密碼:「任意值」 這時SQL語法就會變成: select * from members where account=” or 1=1 /*’ and password=” 因為「/*」在 MySQL 語法中代表註解的意思,所以「/*」後面的字串通通沒有執行,而這句判斷式「1=1」永遠成立,駭客就能登入此網站成功。 SQL 語法的註解 SQL 註解的語法有以下三種,不同的 SQL 版本,會吃不同的語法。 「/*」 MySQL 「–」 MsSQL 「#」 MySQL , # 對於 browser 來說是有意義的,那是錨點的意思,所有必須先透過 Url Encode 後的代碼 「#」 來代替。 防護方式 Sql Injection攻擊很簡單,不過防護也不難,只要過瀘字串「’」,即可,當然如果你的SQL語法寫得很糟,保險的做法是過瀘「’ ” 」等字串,並檢查變數型態「數字、字元、字串」,另外會員的密碼最好是經過加密,如 md5 或 Double md5 演算法加密,這樣就能避免資料外洩時,密碼也同時外洩,還有要特別注意,md5 目前已經有破解方式,改用 mcrypt 會是更好的加密方式。 PHP 過瀘 SQL Injection 的語法: $name = preg_replace(“/[\’\”]+/” , ” ,$name); 另一種過瀘方式 $str = “‘\””; $replace = array(“‘” => “& #39;”, “\”” => “& quot;”); //請自已把 & # , & q 中間的空白移除 $str = strtr($str, $replace); Sql Injection的攻擊方式會因不同的資料庫而有不同的語法, 如 MsSQL的註解是用 「–」MySQL的另一個註解是用 「#」    

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦