PHP 安全問題入門:10 個常見安全問題 + 實例講解

file

文章轉(zhuǎn)自:https://learnku.com/php/t/24930

更多文章:https://learnku.com/laravel/c/translations

相對于其他幾種語言來說焕毫, PHP 在 web 建站方面有更大的優(yōu)勢寻行,即使是新手拱撵,也能很容易搭建一個網(wǎng)站出來寞宫。但這種優(yōu)勢也容易帶來一些負(fù)面影響,因為很多的 PHP 教程沒有涉及到安全方面的知識。

此帖子分為幾部分,每部分會涵蓋不同的安全威脅和應(yīng)對策略。但是旧烧,這并不是說你做到這幾點以后,就一定能避免你的網(wǎng)站出現(xiàn)任何問題画髓。如果你想提高你的網(wǎng)站安全性的話掘剪,你應(yīng)該繼續(xù)通過閱讀書籍或者文章,來研究如何提高你的網(wǎng)站安全性

出于演示需要奈虾,代碼可能不是很完美夺谁。日常開發(fā)過程中,很多代碼都包含在了框架跟各種庫里面肉微。作為一個后臺開發(fā)匾鸥,你不僅要熟練基本的CURD,更要知道如何保護(hù)你的數(shù)據(jù)碉纳。

1. SQL 注入

我賭一包辣條勿负,你肯定會看到這里。 SQL 注入是對您網(wǎng)站最大的威脅之一劳曹,如果您的數(shù)據(jù)庫受到別人的 SQL 注入的攻擊的話奴愉,別人可以轉(zhuǎn)出你的數(shù)據(jù)庫,也許還會產(chǎn)生更嚴(yán)重的后果铁孵。

網(wǎng)站要從數(shù)據(jù)庫中獲取動態(tài)數(shù)據(jù)锭硼,就必須執(zhí)行 SQL 語句,舉例如下:

<?php

$username = $_GET['username'];
$query = "SELECT * FROM users WHERE username = '$username'";

攻擊者控制通過 GET 和 POST 發(fā)送的查詢(或者例如 UA 的一些其他查詢)蜕劝。一般情況下檀头,你希望查詢戶名為「 peter 」的用戶產(chǎn)生的 SQL 語句如下:

SELECT * FROM users WHERE username = 'peter'

但是轰异,攻擊者發(fā)送了特定的用戶名參數(shù),例如:' OR '1'='1

這就會導(dǎo)致 SQL 語句變成這樣:

SELECT * FROM users WHERE username = 'peter' OR '1' = '1'

這樣鳖擒,他就能在不需要密碼的情況下導(dǎo)出你的整個用戶表的數(shù)據(jù)了溉浙。

那么烫止,我們?nèi)绾畏乐惯@類事故的發(fā)生呢蒋荚?主流的解決方法有兩種。轉(zhuǎn)義用戶輸入的數(shù)據(jù)或者使用封裝好的語句馆蠕。轉(zhuǎn)義的方法是封裝好一個函數(shù)期升,用來對用戶提交的數(shù)據(jù)進(jìn)行過濾,去掉有害的標(biāo)簽互躬。但是播赁,我不太推薦使用這個方法,因為比較容易忘記在每個地方都做此處理吼渡。

下面容为,我來介紹如何使用 PDO 執(zhí)行封裝好的語句( mysqi 也一樣):

$username = $_GET['username'];
$query = $pdo->prepare('SELECT * FROM users WHERE username = :username');
$query->execute(['username' => $username]);
$data = $query->fetch();

動態(tài)數(shù)據(jù)的每個部分都以:做前綴。然后將所有參數(shù)作為數(shù)組傳遞給執(zhí)行函數(shù)寺酪,看起來就像 PDO 為你轉(zhuǎn)義了有害數(shù)據(jù)一樣坎背。

幾乎所有的數(shù)據(jù)庫驅(qū)動程序都支持封裝好的語句,沒有理由不使用它們寄雀!養(yǎng)成使用他們的習(xí)慣得滤,以后就不會忘記了。

你也可以參考 phpdelusions 中的一篇關(guān)于動態(tài)構(gòu)建 SQL 查詢時處理安全問題的文章盒犹。鏈接: https://phpdelusions.net/pdo/sql_injection_example 懂更。

2. XSS

XSS 又叫 CSS (Cross Site Script) ,跨站腳本攻擊急膀。它指的是惡意攻擊者往 Web 頁面里插入惡意 html 代碼沮协,當(dāng)用戶瀏覽該頁之時,嵌入其中 Web 里面的 html 代碼會被執(zhí)行卓嫂,從而達(dá)到惡意攻擊用戶的特殊目的慷暂。

下面以一個搜索頁面為例子:

<body>
<?php
$searchQuery = $_GET['q'];
/* some search magic here */
?>
<h1>You searched for: <?php echo $searchQuery; ?></h1>
<p>We found: Absolutely nothing because this is a demo</p>
</body>

因為我們把用戶的內(nèi)容直接打印出來,不經(jīng)過任何過濾命黔,非法用戶可以拼接 URL:

search.php?q=%3Cscript%3Ealert(1)%3B%3C%2Fscript%3E

PHP 渲染出來的內(nèi)容如下呜呐,可以看到 Javascript 代碼會被直接執(zhí)行:

<body>
<h1>You searched for: <script>alert(1);</script></h1>
<p>We found: Absolutely nothing because this is a demo</p>
</body>

問:JS 代碼被執(zhí)行有什么大不了的?

Javascript 可以:

  • 偷走你用戶瀏覽器里的 Cookie;
  • 通過瀏覽器的記住密碼功能獲取到你的站點登錄賬號和密碼悍募;
  • 盜取用戶的機(jī)密信息蘑辑;
  • 你的用戶在站點上能做到的事情,有了 JS 權(quán)限執(zhí)行權(quán)限就都能做坠宴,也就是說 A 用戶可以模擬成為任何用戶洋魂;
  • 在你的網(wǎng)頁中嵌入惡意代碼;
  • ...

問:如何防范此問題呢?

好消息是比較先進(jìn)的瀏覽器現(xiàn)在已經(jīng)具備了一些基礎(chǔ)的 XSS 防范功能,不過請不要依賴與此副砍。

正確的做法是堅決不要相信用戶的任何輸入衔肢,并過濾掉輸入中的所有特殊字符。這樣就能消滅絕大部分的 XSS 攻擊:

<?php

$searchQuery = htmlentities($searchQuery, ENT_QUOTES);

或者你可以使用模板引擎 Twig 豁翎,一般的模板引擎都會默認(rèn)為輸出加上 htmlentities 防范角骤。

如果你保持了用戶的輸入內(nèi)容,在輸出時也要特別注意心剥,在以下的例子中邦尊,我們允許用戶填寫自己的博客鏈接:

<body>
  <a href="<?php echo $homepageUrl; ?>">Visit Users homepage</a>
</body>

以上代碼可能第一眼看不出來有問題,但是假設(shè)用戶填入以下內(nèi)容:

#" onclick="alert(1)

會被渲染為:

<body>
  <a href="#" onclick="alert(1)">Visit Users homepage</a>
</body>

永遠(yuǎn)永遠(yuǎn)不要相信用戶輸入的數(shù)據(jù)优烧,或者蝉揍,永遠(yuǎn)都假設(shè)用戶的內(nèi)容是有攻擊性的,態(tài)度端正了畦娄,然后小心地處理好每一次的用戶輸入和輸出又沾。

另一個控制 XSS 攻擊的方法是提供一個 CSP Meta 標(biāo)簽,或者標(biāo)頭信息熙卡,更多詳情請見: https://www.html5rocks.com/en/tutorials/security/content-security-policy/

另外種 Cookie 時杖刷,如果無需 JS 讀取的話,請必須設(shè)置為 "HTTP ONLY"再膳。這個設(shè)置可以令 JavaScript 無法讀取 PHP 端種的 Cookie挺勿。

3. XSRF/CSRF

CSRF 是跨站請求偽造的縮寫,它是攻擊者通過一些技術(shù)手段欺騙用戶去訪問曾經(jīng)認(rèn)證過的網(wǎng)站并運行一些操作喂柒。

雖然此處展示的例子是 GET 請求不瓶,但只是相較于 POST 更容易理解,并非防護(hù)手段灾杰,兩者都不是私密的 Cookies 或者多步表單蚊丐。

假如你有一個允許用戶刪除賬戶的頁面,如下所示:

<?php
//delete-account.php

$confirm = $_GET['confirm'];

if($confirm === 'yes') {
  //goodbye
}

攻擊者可以在他的站點上構(gòu)建一個觸發(fā)這個 URL 的表單(同樣適用于 POST 的表單)艳吠,或者將 URL 加載為圖片誘惑用戶點擊:

<img src="https://example.com/delete-account.php?confirm=yes" />

用戶一旦觸發(fā)麦备,就會執(zhí)行刪除賬戶的指令,眨眼你的賬戶就消失了昭娩。

防御這樣的攻擊比防御 XSS 與 SQL 注入更復(fù)雜一些凛篙。

最常用的防御方法是生成一個 CSRF 令牌加密安全字符串,一般稱其為 Token栏渺,并將 Token 存儲于 Cookie 或者 Session 中呛梆。

每次你在網(wǎng)頁構(gòu)造表單時,將 Token 令牌放在表單中的隱藏字段磕诊,表單請求服務(wù)器以后會根據(jù)用戶的 Cookie 或者 Session 里的 Token 令牌比對填物,校驗成功才給予通過纹腌。

由于攻擊者無法知道 Token 令牌的內(nèi)容(每個表單的 Token 令牌都是隨機(jī)的),因此無法冒充用戶滞磺。

<?php /* 你嵌入表單的頁面 */ ?>

<form action="/delete-account.php" method="post">
  <input type="hidden" name="csrf" value="<?php echo $_SESSION['csrf']; ?>">
  <input type="hidden" name="confirm" value="yes" />
  <input type="submit" value="Delete my account" />
</form>
## 

<?php
//delete-account.php

$confirm = $_POST['confirm'];
$csrf = $_POST['csrf'];
$knownGoodToken = $_SESSION['csrf'];

if($csrf !== $knownGoodToken) {
  die('Invalid request');
}

if($confirm === 'yes') {
  //goodbye
}

請注意升薯,這是個非常簡單的示例,你可以加入更多的代碼击困。如果你使用的是像 Symfony 這樣的 PHP 框架涎劈,那么自帶了 CSRF 令牌的功能。

你還可以查看關(guān)于 OWASP 更詳細(xì)的問題和更多防御機(jī)制的文章: https://github.com/OWASP/CheatS....

4. LFI

LFI (本地文件包含) 是一個用戶未經(jīng)驗證從磁盤讀取文件的漏洞沛励。

我經(jīng)常遇到編程不規(guī)范的路由代碼示例责语,它們不驗證過濾用戶的輸入。我們用以下文件為例目派,將它要渲染的模板文件用 GET 請求加載。

<body>
<?php
  $page = $_GET['page'];
  if(!$page) {
    $page = 'main.php';
  }
  include($page);
?>
</body>

由于 Include 可以加載任何文件胁赢,不僅僅是PHP企蹭,攻擊者可以將系統(tǒng)上的任何文件作為包含目標(biāo)傳遞。

index.php?page=../../etc/passwd

這將導(dǎo)致 /etc/passwd 文件被讀取并展示在瀏覽器上智末。

要防御此類攻擊谅摄,你必須仔細(xì)考慮允許用戶輸入的類型,并刪除可能有害的字符系馆,如輸入字符中的“.” “/” “\”送漠。

如果你真的想使用像這樣的路由系統(tǒng)(我不建議以任何方式),你可以自動附加 PHP 擴(kuò)展由蘑,刪除任何非 [a-zA-Z0-9-_] 的字符闽寡,并指定從專用的模板文件夾中加載,以免被包含任何非模板文件尼酿。

我在不同的開發(fā)文檔中爷狈,多次看到造成此類漏洞的 PHP 代碼。從一開始就要有清晰的設(shè)計思路裳擎,允許所需要包含的文件類型涎永,并刪除掉多余的內(nèi)容。你還可以構(gòu)造要讀取文件的絕對路徑鹿响,并驗證文件是否存在來作為保護(hù)羡微,而不是任何位置都給予讀取。

5. 不充分的密碼哈希

大部分的 Web 應(yīng)用需要保存用戶的認(rèn)證信息惶我。如果密碼哈希做的足夠好妈倔,在你的網(wǎng)站被攻破時,即可保護(hù)用戶的密碼不被非法讀取指孤。

首先启涯,最不應(yīng)該做的事情贬堵,就是把用戶密碼明文儲存起來。大部分的用戶會在多個網(wǎng)站上使用同一個密碼结洼,這是不可改變的事實黎做。當(dāng)你的網(wǎng)站被攻破,意味著用戶的其他網(wǎng)站的賬號也被攻破了松忍。

其次蒸殿,你不應(yīng)該使用簡單的哈希算法,事實上所有沒有專門為密碼哈希優(yōu)化的算法都不應(yīng)使用鸣峭。哈希算法如 MD5 或者 SHA 設(shè)計初衷就是執(zhí)行起來非澈晁快。這不是你需要的摊溶,密碼哈希的終極目標(biāo)就是讓黑客花費無窮盡的時間和精力都無法破解出來密碼爬骤。

另外一個比較重要的點是你應(yīng)該為密碼哈希加鹽(Salt),加鹽處理避免了兩個同樣的密碼會產(chǎn)生同樣哈希的問題莫换。

以下使用 MD5 來做例子霞玄,所以請千萬不要使用 MD5 來哈希你的密碼, MD5 是不安全的拉岁。

假如我們的用戶 user1user315 都有相同的密碼 ilovecats123坷剧,這個密碼雖然看起來是強(qiáng)密碼,有字母有數(shù)字喊暖,但是在數(shù)據(jù)庫里惫企,兩個用戶的密碼哈希數(shù)據(jù)將會是相同的:5e2b4d823db9d044ecd5e084b6d33ea5

如果一個如果黑客拿下了你的網(wǎng)站陵叽,獲取到了這些哈希數(shù)據(jù)狞尔,他將不需要去暴力破解用戶 user315 的密碼。我們要盡量讓他花大精力來破解你的密碼咨跌,所以我們對數(shù)據(jù)進(jìn)行加鹽處理:

<?php
//warning: !!這是一個很不安全的密碼哈希例子沪么,請不要使用!!

$password = 'cat123';
$salt = random_bytes(20);

$hash = md5($password . $salt);

最后在保存你的唯一密碼哈希數(shù)據(jù)時,請不要忘記連 $salt 也已經(jīng)保存锌半,否則你將無法驗證用戶禽车。

在當(dāng)下,最好的密碼哈希選項是 bcrypt刊殉,這是專門為哈希密碼而設(shè)計的哈希算法殉摔,同時這套哈希算法里還允許你配置一些參數(shù)來加大破解的難度。

新版的 PHP 中也自帶了安全的密碼哈希函數(shù) password_hash 记焊,此函數(shù)已經(jīng)包含了加鹽處理逸月。對應(yīng)的密碼驗證函數(shù)為 password_verify 用來檢測密碼是否正確。password_verify 還可有效防止 時序攻擊.

以下是使用的例子:

<?php

//user signup
$password = $_POST['password'];
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);

//login
$password = $_POST['password'];
$hash = '1234'; //load this value from your db

if(password_verify($password, $hash)) {
  echo 'Password is valid!';
} else {
  echo 'Invalid password.';
}

需要澄清的一點是:密碼哈希并不是密碼加密遍膜。哈希(Hash)是將目標(biāo)文本轉(zhuǎn)換成具有相同長度的碗硬、不可逆的雜湊字符串(或叫做消息摘要)瓤湘,而加密(Encrypt)是將目標(biāo)文本轉(zhuǎn)換成具有不同長度的、可逆的密文恩尾。顯然他們之間最大的區(qū)別是可逆性弛说,在儲存密碼時,我們要的就是哈希這種不可逆的屬性翰意。

6. 中間人攻擊

MITM (中間人) 攻擊不是針對服務(wù)器直接攻擊木人,而是針對用戶進(jìn)行,攻擊者作為中間人欺騙服務(wù)器他是用戶冀偶,欺騙用戶他是服務(wù)器醒第,從而來攔截用戶與網(wǎng)站的流量,并從中注入惡意內(nèi)容或者讀取私密信息进鸠,通常發(fā)生在公共 WiFi 網(wǎng)絡(luò)中稠曼,也有可能發(fā)生在其他流量通過的地方,例如ISP運營商堤如。

對此的唯一防御是使用 HTTPS蒲列,使用 HTTPS 可以將你的連接加密,并且無法讀取或者篡改流量搀罢。你可以從 Let's Encrypt 獲取免費的 SSL 證書,或從其他供應(yīng)商處購買侥猩,這里不詳細(xì)介紹如何正確配置 WEB 服務(wù)器榔至,因為這與應(yīng)用程序安全性無關(guān),且在很大程度上取決于你的設(shè)置欺劳。

你還可以采取一些措施使 HTTPS 更安全唧取,在 WEB 服務(wù)器配置加上 Strict-Transport-Security 標(biāo)示頭,此頭部信息告訴瀏覽器划提,你的網(wǎng)站始終通過 HTTPS 訪問枫弟,如果未通過 HTTPS 將返回錯誤報告提示瀏覽器不應(yīng)顯示該頁面。

然而鹏往,這里有個明顯的問題淡诗,如果瀏覽器之前從未訪問過你的網(wǎng)站,則無法知道你使用此標(biāo)示頭伊履,這時候就需要用到 Hstspreload韩容。

可以在此注冊你的網(wǎng)站: https://hstspreload.org/

你在此處提交的所有網(wǎng)站都將被標(biāo)記為僅 HTTPS,并硬編碼到 Google Chrome唐瀑、FireFox群凶、Opera、Safari哄辣、IE11 和 Edge 的源代碼中请梢。

你還可以在 DNS 配置中添加 Certification Authority Authorization (CAA) record 赠尾,可以僅允許一個證書頒發(fā)機(jī)構(gòu)(例如: Let's encrypt)發(fā)布你的域名證書,這進(jìn)一步提高了用戶的安全性毅弧。

7. 命令注入

這可能是服務(wù)器遇到的最嚴(yán)重的攻擊气嫁,命令注入的目標(biāo)是欺騙服務(wù)器執(zhí)行任意 Shell 命令

你如果使用 shell_exec 或是 exec 函數(shù)。讓我們做一個小例子形真,允許用戶簡單的從服務(wù)器 Ping 不同的主機(jī)杉编。

<?php

$targetIp = $_GET['ip'];
$output = shell_exec("ping -c 5 $targetIp");

輸出將包括對目標(biāo)主機(jī) Ping 5次。除非采用 sh 命令執(zhí)行 Shell 腳本咆霜,否則攻擊者可以執(zhí)行想要的任何操作邓馒。

ping.php?ip=8.8.8.8;ls -l /etc

Shell 將執(zhí)行 Ping 和由攻擊者拼接的第二個命令,這顯然是非常危險的蛾坯。

感謝 PHP 提供了一個函數(shù)來轉(zhuǎn)義 Shell 參數(shù)光酣。

escapeshellarg 轉(zhuǎn)義用戶的輸入并將其封裝成單引號。

<?php

$targetIp = escapeshellarg($_GET['ip']);
$output = shell_exec("ping -c 5 $targetIp");

現(xiàn)在你的命令應(yīng)該是相當(dāng)安全的脉课,就個人而言救军,我仍然避免使用 PHP 調(diào)用外部命令,但這完全取決于你自己的喜好倘零。

另外唱遭,我建議進(jìn)一步驗證用戶輸入是否符合你期望的形式。

8. XXE

XXE (XML 外部實體) 是一種應(yīng)用程序使用配置不正確的 XML 解析器解析外部 XML 時呈驶,導(dǎo)致的本地文件包含攻擊拷泽,甚至可以遠(yuǎn)程代碼執(zhí)行。

XML 有一個鮮為人知的特性袖瞻,它允許文檔作者將遠(yuǎn)程和本地文件作為實體包含在其 XML 文件中司致。

<?xml version="1.0" encoding="ISO-8859-1"?>
 <!DOCTYPE foo [
   <!ELEMENT foo ANY >
   <!ENTITY passwd SYSTEM "file:///etc/passwd" >]>
   <foo>&passwd;</foo>

就像這樣, /etc/passwd 文件內(nèi)容被轉(zhuǎn)儲到 XML 文件中聋迎。

如果你使用 libxml 可以調(diào)用 libxml_disable_entity_loader 來保護(hù)自己免受此類攻擊脂矫。使用前請仔細(xì)檢查 XML 庫的默認(rèn)配置,以確保配置成功霉晕。

9. 在生產(chǎn)環(huán)境中不正確的錯誤報告暴露敏感數(shù)據(jù)

如果你不小心庭再,可能會在生產(chǎn)環(huán)境中因為不正確的錯誤報告泄露了敏感信息,例如:文件夾結(jié)構(gòu)娄昆、數(shù)據(jù)庫結(jié)構(gòu)佩微、連接信息與用戶信息。

file

你是不希望用戶看到這個的吧萌焰?

一般根據(jù)你使用的框架或者 CMS 哺眯,配置方法會有不同的變化。通嘲歉框架具有允許你將站點更改為某種生產(chǎn)環(huán)境的設(shè)置奶卓。這樣會將所有用戶可見的錯誤消息重定向到日志文件中一疯,并向用戶顯示非描述性的 500 錯誤,同時允許你根據(jù)錯誤代碼檢查夺姑。

但是你應(yīng)該根據(jù)你的 PHP 環(huán)境設(shè)置: error_reportingdisplay_errors.

10. 登錄限制

像登錄這樣的敏感表單應(yīng)該有一個嚴(yán)格的速率限制墩邀,以防止暴力攻擊。保存每個用戶在過去幾分鐘內(nèi)失敗的登錄嘗試次數(shù)盏浙,如果該速率超過你定義的閾值眉睹,則拒絕進(jìn)一步登錄嘗試,直到冷卻期結(jié)束废膘。還可通過電子郵件通知用戶登錄失敗竹海,以便他們知道自己的賬戶被成為目標(biāo)。

一些其他補充

  • 不要信任從用戶傳遞給你的對象 ID 丐黄,始終驗證用戶對請求對象的訪問權(quán)限

  • 服務(wù)器與使用的庫時刻保持最新

  • 訂閱關(guān)注安全相關(guān)的博客斋配,了解最新的解決方案

  • 從不在日志中保存用戶的密碼

  • 不要將整個代碼庫存儲在 WEB 根目錄中

  • 永遠(yuǎn)不要在 WEB 根目錄創(chuàng)建 Git 存儲庫,除非你希望泄露整個代碼庫

  • 始終假設(shè)用戶的輸入是不安全的

  • 設(shè)置系統(tǒng)禁止可疑行為的 IP 顯示灌闺,例如:工具對 URL 隨機(jī)掃描艰争、爬蟲

  • 不要過分信任第三方代碼是安全的

  • 不要用 Composer 直接從 Github 獲取代碼

  • 如果不希望站點被第三方跨域 iframe,請設(shè)置反 iframe 標(biāo)示頭

  • 含糊是不安全的

  • 如果你是缺乏實踐經(jīng)驗的運營商或合作開發(fā)人員桂对,請確保盡可能時常檢查代碼

  • 當(dāng)你不了解安全功能應(yīng)該如何工作甩卓,或者為什么會安裝,請詢問知道的人蕉斜,不要忽視它

  • 永遠(yuǎn)不要自己寫加密方式猛频,這可能是個壞的方法

  • 如果你沒有足夠的熵,請正確播種你的偽隨機(jī)數(shù)生成并舍棄

  • 如果在互聯(lián)網(wǎng)上不安全蛛勉,并有可能被竊取信息,請為這種情況做好準(zhǔn)備并制定事件響應(yīng)計劃

  • 禁用 WEB 根目錄列表顯示睦柴,很多 WEB 服務(wù)器配置默認(rèn)都會列出目錄內(nèi)容诽凌,這可能導(dǎo)致數(shù)據(jù)泄露

  • 客戶端驗證是不夠的,需要再次驗證 PHP 中的所有內(nèi)容

  • 不惜一切代價避免反序列化用戶內(nèi)容坦敌,這可能導(dǎo)致遠(yuǎn)程代碼執(zhí)行侣诵,有關(guān)此問題的詳細(xì)信息,請參閱此文章: https://paragonie.com/blog/2016/04/securely-implementing-de-serialization-in-php

小貼士

我不是一個安全專家狱窘,恐無法做到事無巨細(xì)杜顺。盡管編寫安全軟件是一個非常痛苦的過程,但還是可以通過遵循一些基本規(guī)則蘸炸,編寫合理安全的應(yīng)用程序躬络。其實,很多框架在這方面也幫我們做了很多工作搭儒。

在問題發(fā)生之前穷当,安全性問題并不像語法錯誤等可以在開發(fā)階段追蹤到提茁。因此,在編寫代碼的過程中馁菜,應(yīng)該時刻有規(guī)避安全風(fēng)險的意識茴扁。如果你迫于業(yè)務(wù)需求的壓力而不得不暫時忽略一些安全防范的工作,我想你有必要事先告知大家這樣做的潛在風(fēng)險汪疮。

如果你從這篇文章有所收益峭火,也請把它分享給你的朋友們把,讓我們共建安全網(wǎng)站智嚷。

文章轉(zhuǎn)自:https://learnku.com/php/t/24930

更多文章:https://learnku.com/laravel/c/translations

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卖丸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子纤勒,更是在濱河造成了極大的恐慌坯苹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摇天,死亡現(xiàn)場離奇詭異粹湃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)泉坐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門为鳄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腕让,你說我怎么就攤上這事孤钦。” “怎么了纯丸?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵偏形,是天一觀的道長。 經(jīng)常有香客問我觉鼻,道長俊扭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任坠陈,我火速辦了婚禮萨惑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仇矾。我一直安慰自己庸蔼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布贮匕。 她就那樣靜靜地躺著姐仅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萍嬉,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天乌昔,我揣著相機(jī)與錄音,去河邊找鬼壤追。 笑死磕道,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的行冰。 我是一名探鬼主播溺蕉,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼悼做!你這毒婦竟也來了疯特?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肛走,失蹤者是張志新(化名)和其女友劉穎漓雅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體朽色,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡邻吞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了葫男。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抱冷。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖梢褐,靈堂內(nèi)的尸體忽然破棺而出旺遮,到底是詐尸還是另有隱情,我是刑警寧澤盈咳,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布耿眉,位于F島的核電站,受9級特大地震影響鱼响,放射性物質(zhì)發(fā)生泄漏跷敬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一热押、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斤寇,春花似錦桶癣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春间雀,著一層夾襖步出監(jiān)牢的瞬間悔详,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工惹挟, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留茄螃,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓连锯,卻偏偏與公主長得像归苍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子运怖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容