register_globals(全局變量注冊開關)

register_globals,是php.ini文件里面的一個配置選項,接下來,我們可以通過例程來分析一下,當register_globals = on 與 register_globals = off 的時候,對php語言的一些安全影響。

測試源代碼如下:

index.html 源代碼:

<form method="post" action="index.php">

<table>

? <tr>

?<td>用戶名:</td>

??? <td><input name="username" type="text"></td>

? </tr>

? <tr>

??? <td>密 碼:</td>

?<td><input name="password" type="password"></td>

? </tr>

</table>

<input type="submit" name="submit" value="登錄" class="button">

</form>

index.php 源代碼:

<?php

? //包含配置文件

? require_once ('config.inc.php');

? //如果用戶已經登錄提交

? if($_POST['submit'])

? {

//用戶名

$username=ClearSpecialChars($_POST['username']);

//密碼,需要進行MD5或者sha1加密

$password=md5($_POST['password']);

//$password=sha1($_POST['password']);

//從數據庫中檢索用戶名,密碼是否匹配

$sql = "SELECT * FROM user WHERE username='$username' AND password='$password'";

$result = @mysql_query($sql);

$num_rows = @mysql_num_rows($result);

if($num_rows == 1)

{

//獲得用戶名

$row = mysql_fetch_assoc($result);

//將用戶名存入SESSION中

$_SESSION['username'] = $row['username'];

//跳轉到用戶權限頁面

header("Location: main.php");

}

else

{

ExitMessage("用戶名或者密碼錯誤!");

}

?}

?>

1-1:

當設置register_globals = off 的時候,index.php源代碼可以正常執行(注意:修改php.ini文件之后需要我們重新啟動Apache修改方能生效),如圖:

?

?

輸入正確的用戶名與密碼之后,執行效果如下:

?

?

1-2:

當設置register_globals = on 的時候,index.php源代碼修改成這樣子也可以正常執行(注意:修改php.ini文件之后需要我們重新啟動Apache修改方能生效),如圖:

修改后的php.ini文件如圖:

?

?

修改后的index.php源代碼,執行效果如圖:

?

?

修改之后的index.php源代碼如下:

<?php

? //包含配置文件

? require_once ('config.inc.php');

? //如果用戶已經登錄提交

? if($_POST['submit'])

? {

//用戶名

//$username=ClearSpecialChars($_POST['username']);

$username=ClearSpecialChars($username);

//密碼,需要進行MD5或者sha1加密

//$password=md5($_POST['password']);

$password=md5($password);

//$password=sha1($_POST['password']);

//從數據庫中檢索用戶名,密碼是否匹配

$sql = "SELECT * FROM user WHERE username='$username' AND password='$password'";

$result = @mysql_query($sql);

$num_rows = @mysql_num_rows($result);

if($num_rows == 1)

{

//獲得用戶名

$row = mysql_fetch_assoc($result);

//將用戶名存入SESSION中

$_SESSION['username'] = $row['username'];

//跳轉到用戶權限頁面

header("Location: main.php");

}

else

{

ExitMessage("用戶名或者密碼錯誤!");

}

?}

?>

總結:


有關于php版本與register_globals的歷史

php從>=4.20版本開始,php.ini中register_globals = Off了,php之前的版本register_globals = On 的。

php從>=4.20版本開始,使用register_globals = Off 的原因

當 register_globals = On,即register_globals 打開以后,各種變量都被注入代碼,例如來自 HTML 表單的請求變量。再加上 PHP 在使用變量之前是無需進行初始化的,這就使得更容易寫出不安全的代。但 PHP 社區還是決定默認關閉此選項。當打開時,人們使用變量時確實不知道變量是哪里來的,所以,php社區還是決定選擇register_globals = Off的情況,這樣,php語言寫出來的代碼會更安全些。

轉載于:https://www.cnblogs.com/windclouds/p/5412844.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458078.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458078.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458078.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

精述IBM的MQTT協議和MQTT-S協議

一&#xff0e;MQTT簡介 MQTT (Message Queuing Telemetry Transport) 是由IBM研發的構建在TCP/IP之上的簡單輕量的消息協議&#xff0c;目標使用場景為受限制環境&#xff0c;如低帶寬、高延遲、不可靠網絡&#xff0c;很適用于M2M和IoT中。它的競爭協議包括XMPP協議和IETF的C…

20150103--SQL連接查詢+視圖-02

20150103--SQL連接查詢視圖-02 子查詢 一條查詢語句出現在另外一條查詢語句的內部&#xff0c;這條語句就被稱之為子查詢語句。 子查詢分類 子查詢可以根據子查詢返回的結果以及子查詢出現的位置兩種方式進行分類 按結果分類&#xff1a; 標量子查詢&#xff1a;子查詢返回的結…

QtQuick controls和controls2 自定義樣式

2019獨角獸企業重金招聘Python工程師標準>>> controls import QtQuick 2.7 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4Rectangle {color: "green"Button {id:buttontext: qsTr("Second page")anchors.centerIn: parentpr…

電腦開機3秒就重啟循環_電腦修好后客戶不愿支付上門費,行,那電腦開機60秒自動關機吧!...

上門維修電腦已經非常普及了&#xff0c;上門維修電腦費用要比送修(送到維修店)費用高&#xff0c;送修電腦只有一項維修費用&#xff0c;上門維修電腦比送修多了一項費用&#xff0c;這項費用就是上門費。有人說維修電腦收取上門費用不合理&#xff0c;其實這樣的說法非常自私…

jQuery屬性篩選選擇器

2019獨角獸企業重金招聘Python工程師標準>>> 代碼一 <h2>屬性篩選選擇器</h2><h3>[attval]、[att]、[att|val]、[att~val]</h3><div class"left" testattr"true" ><div class"div" testattr"t…

java 代碼優化

Java程序中的內存管理機制是通過GC完成的&#xff0c;“一個對象創建后被放置在JVM的堆內存中&#xff0c;當永遠不在應用這個對象的時候將會被JVM在堆內存中回收。被創建的對象不能再生&#xff0c;同時也沒有辦法通過程序語句釋放”&#xff08;這個是《Java的GC機制》中提到…

Halcon中OCR的實現及關鍵函數解析

OCR的實現共分為兩步&#xff0c;1是使用字符數據來訓練OCR。2是使用OCR進行字符的識別。 訓練分類器 訓練分類器共分為4步&#xff1a; 1是使用閾值來分割字符區域&#xff1b; 2是調用append_ocr_trainf函數將字符加入訓練集&#xff1b; 3是創建分類器&#xff1b; 4是…

MATLAB 長度和像素_Matlab中短時傅里葉變換 spectrogram和stft的用法

在Matlab中&#xff0c;做短時傅里葉變換需要使用函數spectrogram&#xff0c;而在Matlab2019中&#xff0c;引入了一個新的函數stft&#xff0c;下面我們就來看下這兩個函數都如何使用。短時傅里葉變換的基本原理就是將數據分段加窗&#xff0c;做fft&#xff0c;在分段時會有…

Qt 【關于控件樣式,鼠標進入、離開、點擊】

比如舉以下這個例子: QPushButton * okBtn; okBtn->setstylesheet("QPushButton{border-image:url(:/image/hello);}"); //這個是最常規的樣式 okBtn->setstylesheet("QPushButton{border-image:url(:/image/hello);}" //…

圖像處理基礎——灰度共生矩陣

標準定義如下&#xff1a;對于取定的方向θ 和距離 d, 在方向為θ的直線上, 一個像元灰度為 i, 另一個與其相距為 d 像元的灰度為 j 的點對出現的頻數即為灰度共生矩陣第(i, j)陣元的值。 怎樣理解呢&#xff1f;看起來好復雜呀 嗚嗚嗚 小白理解&#xff1a;灰度共生矩陣就…

iphone查看刪除的短信_iPhone12發布!剛買的蘋果手機短信全部消失了怎么辦?

原標題&#xff1a;iPhone12發布&#xff01;剛買的蘋果手機短信全部消失了怎么辦&#xff1f;目前&#xff0c;人們的社交除了面對面交談&#xff0c;用的最多的就是通過手機進行聊天&#xff0c;比如用QQ、微信和短信、郵件等方式&#xff0c;雖然短信不會用來一般的聊天&…

[唐詩]182宮中行樂詞(其一)-李白

宮中行樂詞(其一)-李白 小小生金屋&#xff0c; 盈盈在紫微。 山花插寶髻&#xff0c; 石竹繡羅衣。 每出深宮里&#xff0c; 常隨步輦歸。 只愁歌舞散&#xff0c; 化作彩云飛。

python基礎之01數據類型-變量-運算淺解

python的數據類型 1 數字 數字分為整型&#xff08;int&#xff09;&#xff0c;長整型&#xff08;long&#xff09;&#xff0c;浮點型&#xff08;float&#xff09;&#xff0c;復數&#xff08;complex&#xff09; 整型較為常用的功能&#xff1a; >>> a-4 >…

使用Caffe進行手寫數字識別執行流程解析

之前在 http://blog.csdn.net/fengbingchun/article/details/50987185 中仿照Caffe中的examples實現對手寫數字進行識別&#xff0c;這里詳細介紹下其執行流程并精簡了實現代碼&#xff0c;使用Caffe對MNIST數據集進行train的文章可以參考 http://blog.csdn.net/fengbingchun/…

obs可以裝手機嗎?_原神PC和手機數據互通嗎 PC和手機可以一起玩嗎

在原神中&#xff0c;很多玩家都在PC端創建了角色&#xff0c;那么疑問來了&#xff0c;PC端與手機端的賬號會是互通的嗎&#xff1f;下面小編就為大家帶來原神PC和手機數據互通嗎的相關內容&#xff0c;一起來看看吧&#xff01;更多攻略&#xff1a;原神攻略大全PC和手機數據…

學習linux第二周作業

第二周作業&#xff1a;本周作業內容&#xff1a;1、Linux上的文件管理類命令都有哪些&#xff0c;其常用的使用方法及其相關示例演示。touch,rm,mv,cp,file,ls,chmod,chown,ln,rename,touch 修改文件atime&#xff0c;如果文件不存在&#xff0c;那么創建該文件。rm&#xff1…

三維點云目標提取總結(續)

三維點云目標提取&#xff08;續&#xff09; 3.三維點云目標提取 3.1一般流程 先根據個人認識總結一下目標提取的一般性步驟&#xff1a; 如上所示&#xff0c;三維點云的目標提取關鍵性的兩步即為&#xff1a;特征提取與選擇、分類&#xff0c;是不是整個方法流程與圖像中的目…

安卓高手之路之java層Binder

很多人一提到Binder就說代理模式&#xff0c;人云亦云的多&#xff0c;能理解精髓的少。 本篇文章就從設計角度分析一下java層BInder的設計目標&#xff0c;以及設計思路&#xff0c;設計缺陷&#xff0c;從而駕馭它。 對于【邦德兒】的理解, 從通信的角度來看&#xff0c;就是…

ftp改為sftp_淺談 FTP、FTPS 與 SFTP

二狗子最近搭建了一個圖片分享網站&#xff0c;每天都有好多人在他的網站上傳許多照片&#xff0c;這些照片還會通過內部的邏輯同步到又拍云存儲中&#xff0c;非常方便。但不久后問題就來了&#xff0c;由于剛開始的用戶照片管理規劃沒有做好&#xff0c;隨著用戶上傳的圖片越…

如何解決秒殺的性能問題和超賣的討論

2019獨角獸企業重金招聘Python工程師標準>>> 最近業務試水電商&#xff0c;接了一個秒殺的活。之前經常看到淘寶的同行們討論秒殺&#xff0c;討論電商&#xff0c;這次終于輪到我們自己理論結合實際一次了。 ps&#xff1a;進入正文前先說一點個人感受&#xff0c;…