1. 程式人生 > >php中使用in_array易產生程式碼安全漏洞

php中使用in_array易產生程式碼安全漏洞

執行上面的程式碼看看,你想說什麼?

我是驚出了冷汗的

in_array常被老手們這樣用做變數檢查,但顯然結果並不靠譜。

為什麼會這樣呢?再試試這個

問題似乎是PHP的預設型別轉換造成的,數字與字串比較時,字串先被強制轉成數字再進行了比較。真的是這個原因嗎?愛較真的朋友請自行檢視PHP原始碼,沒準你還會發現其他問題。

其實in_array提供有第三個引數(預設為false),用於執行嚴格的型別檢查,避免這個問題只需將其設定為true,但不是每個人都留意使用。搜了一下WordPress原始碼中使用 in_array 263處,許多關鍵處都使用了第三個引數,看來自己離老手還差得遠那。

多少要埋怨一下,為什麼不把第三個引數預設為true呢,這也太容易讓人犯獵了。想想原因也很簡單,為了保持PHP在型別處理上的一致性,就是讓像下面的程式碼結果與你的期望一致。

最後想說的是,這不構成對PHP弱型別詬病的理由,這是WEB開發的特點確定的,如果讓程式碼中充斥大量型別檢查和型別轉換會更讓人難以忍受,讓使用PHP的開發者有大刀闊斧、暢快淋漓的快感,是我喜歡PHP的原因之一。

但缺點確實是存在的,解決方案已經給出,本例中你可以在需要時為in_array設定第三個引數,或者使用另一個函式array_search。

打出”安全漏洞“的題目,標題黨一回了,給新手也給自己提個醒。

相關推薦

php使用in_array產生程式碼安全漏洞

<?php $arr = array('abc', '999'); $needle = 0; if (in_array($needle, $arr)) { echo 'ok'; } else { echo 'not in array'; } ?> 執行上面

在Wi-Fi路由器發現了新的安全漏洞

系列 不同 自己 asc 無線路由器 頻率 使用 script 視頻   黑客利用兩種互聯網通用協議的互動的漏洞:傳輸控制協議,或TCP和Wi-Fi。該漏洞利用並不針對任何傳統的安全漏洞。相反,安全方面的弱點在於20多年前制定的基本Wi-Fi設計決策極難改變。   中國黑

PHP一些混運算符的比較

過程 load image 文檔 插入 這也 浮點 ogr 失去 #0x00 PHP中 == 與 ===的區別 ===比較兩個變量的類型==只比較他們的值 e.g 比如整數0和浮點數0.0 用==比較返回TRUE 用===比較返回FLASE###用代碼測

安全漏洞--C/C++程式碼安全漏洞審計技術學習分享

[email protected]:~/Desktop# flawfinder --h *** getopt error: option --h not a unique prefix flawfinder [--help | -h] [--version] [--listrules] [--

PHPin_array 效率及其優化

大家可能都用過in_array來判斷一個數據是否在一個數組中,一般我們的陣列可能資料都比較小,對效能沒什麼影響,所以也就不會太在意,但是如果陣列比較大的時候,效能就會下降,執行的就會久一點,那如果針對在大陣列情況下做優化呢,下面說兩種方法(都是通過自定義函式來實現): 1.陣列key與value翻轉,通

為什麼PHPin_array效率低

這個問題主要原因是in_array判斷某個值是否存在陣列中,對比時會把值型別轉化成 一致的型別進行比較,如此一來效率就慢很多。具體參考 http://www.zendstudio.net/archives/php-in_array-s-low-performance/#mo

網站常見的安全漏洞有哪些,如何修改

網站安全 網站漏洞 網站攻擊 隨著互聯網的發展,網絡安全問題越來越受到大家重視,一個企業的網站如果出現安全問題,對企業的品牌形象和用戶信任度影響非常大,那如何保障網站的安全問題呢?我們能做的就是在出現問題前做好預防,今天小編來分享一些網站建設中常見的安全漏洞。 1、明文傳輸 問題描述:對系統用戶

PHP的MD5()函式漏洞

文章目錄 1. MD5函式漏洞 2.PHP特性 3.MD5碰撞 1. MD5函式漏洞 $_GET['a'] != $_GET['b'] && MD5($_GET['a']) == MD5($_GE

Git的遠端程式碼執行漏洞已被修復 多個工具受影響

  據外媒 BleepingComputer 報道,Git 專案組於前兩天公佈了一個在 Git 命令列客戶端、Git Desktop 和 Atom 中發現的任意程式碼執行漏洞,這是一個比較嚴重的安全漏洞,可能會使得惡意倉庫在易受攻擊的計算機上遠端執行命令。   這個漏洞已被分配 CVE-

GitHub修復了允許任意程式碼執行的安全漏洞 Windows不受影響

GitHub是面向全球開發人員的首選程式碼共享和託管服務。雖然歐盟尚未最終確定該交易,但該公司在6月被微軟收購,作價75億美元。今天,GitHub宣佈了他們系統中的一個漏洞,允許任意程式碼執行的安全漏洞的攻擊。現在已經解決了這個問題,目前只有Unix平臺受到了影響。 GitHub的安全列表表示,如果執行了特

php隨機函式mt_rand()產生的小問題大漏洞

**說到隨機函式的應用,作為一個菜鳥,理解的也不是很深刻,在這裡之作為一個筆記來記錄,以後慢慢將其掌握之後,再在內容上面進行加深。 隨機函式的作用,常常是用來生成驗證碼、隨機檔名、訂單號,如果用來做安全驗證的話常常用來生成加密key、token等等。** 一、常見的隨機函式 1、rand() 常用的隨機

php類的繼承與程式碼複用

/** * 類的繼承 * 1. 繼承是為了程式碼複用 * 2. php只支援單繼承 * 3. 父類也叫超類,基類,子類也叫派生類 */   //宣告一個父類 class ParentClass{ public $name; protected $cour

php如何產生隨機字串

當我們在開發的時候,我們會遇到這些業務場景:如給使用者資訊一個隨機的字串作為一個唯一的認證方式、給商家一個特定的標識、給某些商品一個代表、存為一個session標識作為快取、給redis一個鍵值對等等。我們很多場景都會需要一個隨機字串使用,這裡小王給大家,封裝

Mozilla在Thunderbird 60.3的修補了多個安全漏洞

Mozilla最近在新發布的Thunderbird 60.3電子郵件客戶端中修復了多個安全漏洞,其中包括一個緊急(Critical)漏洞。據稱,該漏洞也影響到Mozilla的Firefox和Firefox ESR瀏覽器。 一個緊急漏洞影響多款Mozilla產品 在上週,M

以太坊常見的程式碼安全問題以及在Ethernaut平臺解題的演示

以太坊中常見的程式碼安全問題 下面列出了已知的常見的 Solidity 的漏洞型別: Reentrancy - 重入 Access Control - 訪問控制 Arithmetic Issues - 算術問題(整數上下溢位) Unchecked Return

PHP程式碼安全PHP弱口令、加密函式、繞過函式】/CTF程式碼審計題

注:結合現在所學,把以前的一些很散的部落格給彙總起來方便利用【刪了黑歷史,哈哈哈】 1、判等型別 1.1、”==”與”===”比較漏洞/switch 如果你認為“==”和"==="最大的區別在於,“==”是判斷數值是否相等,“===”則是判斷數值和型別是否相等,那就錯了,這

修補網路安全漏洞之Apache HTTPD禁用跟蹤

一、背景介紹       apache的httpd web伺服器預設開啟了http的trace與track方法,這些方法是存在安全風險的,它們會產生跨站點跟蹤問題。HTTP TRACK方法是微軟編寫的,與TRACE的功能基本相同,除了滲透測試人員,黑客,蠕蟲和漏洞掃描程式之

php常用的幾種加密方式以及md5加密漏洞以及解決方案

一、md5(php中的最常用的加密方式) 在用md5進行加密時,至少要將md5加密兩次以上(包含兩次),或者再加上鹽進行加密 二、password_hash(php5.5以上版本才可以使用) 官方說明連結:http://www.php.net/manual/zh/function.pas

PHPis_numeric函式十六進位制繞過BUG 容易引發安全問題

0×00 簡介 國內一部分CMS程式裡面有用到過is_numberic函式,我們先看看這個函式的結構 bool is_numeric ( mixed $var ) 如果 var 是數字和數字字串則返回 TRUE,否則返回 FALSE。 0×01 函式是否安全 接下來我們

PHP 配置檔案open_basedir選項作用防止下載漏洞

open_basedir: 將使用者可操作的檔案限制在某目錄下 如下是php.ini中的原文說明以及預設配置:  ; open_basedir, if set, limits all file operations to the defined directory  ; a