你的PHP/Laravel網(wǎng)站是否足夠安全?
1. SQL 注入
或許這是最知名的漏洞. 從根本上來(lái)說(shuō), 他允許網(wǎng)站攻擊者注入 SQL 到你的代碼中. 如果你的代碼就想這樣:
- $post_id = $_POST['post_id'];
- $sql = "DELETE FROM posts WHERE user_id = 1 AND id = $post_id";
- \DB::statement($sql);
如果有人在 email 字段輸入: 1 OR 1. SQL 語(yǔ)句將像以下這樣:
- $sql = "DELETE FROM posts WHERE user_id = 1 AND id = 1 OR 1";
基本上你在說(shuō)的是 --- 請(qǐng)刪除所有用戶的所有帖子.
2. XSS (cross site scripting)
跨站腳本攻擊類似于SQL注入.它會(huì)向HTML頁(yè)面注入HTML/JavaScript代碼.
想象一個(gè)類似于Google的,用戶可以輸入并進(jìn)行搜索的頁(yè)面,在搜索結(jié)果顯示頁(yè)面,如果你用如下的方式顯示用戶搜索的結(jié)果:
- <?php echo 'You searched for: ' . $_GET['search_query']; ?>
如果攻擊者嘗試輸入類似如下的代碼:
- <script>alert('surprise!');</script>
瀏覽器將會(huì)執(zhí)行這句JavaScript 腳本,用戶將會(huì)看到一個(gè)顯示著"surprise!"的彈窗.
攻擊者利用這個(gè)漏洞,可以竊取瀏覽器的cookie,強(qiáng)制用戶跳轉(zhuǎn)到其他網(wǎng)站,竊取用戶的密碼.什么?你的密碼是123456?
3. CSRF (跨站請(qǐng)求偽造)
例如在你的網(wǎng)站上有用戶可以用來(lái)刪除賬戶的鏈接.
- <a href="http://your-website.com/delete-account">delete account</a>
猜測(cè)以下如果攻擊者提交一個(gè)如下這樣的評(píng)論會(huì)發(fā)生什么:
- <img src=”http://your-website.com/delete-account”> lol :D
用戶將在查看此評(píng)論的時(shí)候刪除他們的賬號(hào). 讓我們繼續(xù)發(fā)表評(píng)論.
4. 點(diǎn)擊劫持
這種攻擊類型試圖讓你點(diǎn)擊你不想要的地方。例如通過(guò)在其他按鈕頂部放置不可見的 Facebook like 按鈕。
另一個(gè)例子是在 <iframe> 中打開 Facebook ,并將這個(gè) iframe 放置在 JavaScript 代碼中,所以無(wú)論何時(shí)你點(diǎn)擊某個(gè)地方,你總是會(huì)點(diǎn)擊到 Facebook 頁(yè)面上的分享按鈕。
查看示例
你也喜歡這個(gè)例子嗎?
5. 上傳文件到 public_html
這種攻擊形式是,攻擊者上傳 .php 文件或者其他可執(zhí)行文件到你的 public_html 目錄。.
想象一下如果你的網(wǎng)站有圖片上傳功能,同時(shí)沒(méi)有檢測(cè)上傳文件的類型。我仿佛看見一場(chǎng)上傳風(fēng)暴撲面而來(lái)...
6. ZIP 炸彈
一些網(wǎng)站允許用戶上傳 .zip 文檔,然后進(jìn)行解壓縮和再處理。但這里存在一個(gè)大問(wèn)題。
很有可能這個(gè) .zip 文檔大小僅有 42 KB,但在解壓后會(huì)占用 4718592 GB 的空間。你可以把它想象成一顆原子彈。
樣例文件
7. file_get_contents()
使用這個(gè)函數(shù)可以輕松的讀取文件內(nèi)容:
- echo file_get_contents('https://some-website.com/friend-list.txt');
但是你如果讓攻擊者輸入他想要的,他可以從你服務(wù)器進(jìn)入的文件,例如:
- echo file_get_contents('.env');
OR
- echo file_get_contents('secret-code.php');
這個(gè)函數(shù)將會(huì)從你的服務(wù)器讀取文件和展示內(nèi)容給攻擊者。
這個(gè)漏洞是很難找到的,就像皮卡丘在寵物小精靈之中一樣難找。
總結(jié)
想要在這場(chǎng)漏洞之戰(zhàn)中贏得勝利,最好的方法就是深入了解它們。