php開發中的安全

SQL注入攻擊原理分析

把用戶提供的數據跟我們的SQL語句拼接執行。
舉例,代碼如下:

$sql = 'select * from love where id='.$id;
$db->query($sql);

上面的$id是用戶提交的數據,如果是1會形成如下SQL語句

select * from love where id=1

那麼如果提交的是1;delete from love就會得到如下語句

select * from love where id=1;delete from love

執行結果就會刪除love表裏所有的數據。
黑客可以利用這個漏洞獲取後臺管理員賬號密碼,甚至通過root權限的MySQL賬號控制整個網站服務器。
sqlmap專門用來做注入測試使用的工具

PDO預處理防止注入攻擊

例子:

//通過自定義函數conn連接數據庫
$db = conn();
//用:content先佔位子,如果有多字段用逗號隔開,例如:
//$sql = 'insert into love(content,created_at) values(:content,:created_at)';
$sql = 'insert into love(content) values(:content)';
//預處理SQL語句接受返回值
$stmt = $db->paepare($sql);
//綁定對應的參數,別忘記content前的冒號,如果有有多個參數就多寫幾行調用bindParam函數
$stmt->bindParam(':content',$content);
//執行sql語句,返回影響的行數,stmt調用execute,不是db調用exec
$count = $stmt->execute();

XSS漏洞產生的原理

xss漏洞簡單來說就是用戶提交的js代碼在我們網頁上被執行。
分爲兩種存儲型和反射型。可以簡單試試在發佈表白信息的時候,提交的表白內容改爲<script>alert('123');</script>發佈後,看看是否會提示對話框。

如何防止xss漏洞

我們只需要把內容中所有的<>過濾掉,就已經可以防範絕大部分的xss攻擊了。
使用php函數可以很好的達到效果,根據情況使用不同函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章