亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP中的session安全嗎?

2020-03-22 18:12:57
字體:
來源:轉載
供稿:網友
做PHP開發這么長時間,還真沒有真正關注過安全的問題,每次都是以完成項目為主,最近在網上看到了一篇關于安全的文章,看完以后才注意到自己以前的項目都存在著很大的安全漏洞,于是挑了一個項目進行了測試,發現很容易就中招兒了。在這里我會分享自己寫的一個測試的例子來說明PHP中的session是如何不安全的,以及在項目中如何加強其安全性。
對于session的原理機制,網上有很多好的文章來介紹,我們可以自行查閱。下面直接分享測試用的例子。
這個測試的例子主要就是一個登錄頁,登錄成功以后可以修改密碼,就這樣一個簡單的功能。
界面如下
首先是在項目入口的地方使用函數 session_start() 開啟了session。這樣當客戶端發起請求的時候,會產生一個身份標識 也就是 SessionID。通過cookie的方式保存在客戶端,客戶端和服務端每次的通信都是靠這個SessionID來進行身份識別的。
登錄成功以后,會將 用戶id、用戶名存入session中
$_SESSION[‘userid'] = 用戶id$_SESSION[‘uname'] = 用戶名以后所有的操作都是通過判斷 $_SESSION[‘userid']是否存在來檢查用戶是否登錄。代碼如下:
if(isset($_SESSION['userid'])) return true;對于修改密碼接口的調用是通過ajax post的方式將數據傳輸到服務端的。
$.post("接口*******", oldpass:oldpass, newpass:newpass, userid:uid, function(data){ data = eval('(' +data+ ')'); $('.grant_info').html(infos[data.info]).show();注意,我這里將這段代碼寫在了html頁面中,所以說如果看到了html代碼,也就知道了接口地址了。
修改密碼的接口是這樣實現的,首先是判斷用戶是否登錄,如果登錄才會進行密碼的修改操作。
測試例子的實現思路大概就是上面介紹的那樣。
利用SessionID攻擊
1. 首先是獲取SessionID,當然攻擊者獲取此標識的方式有很多,由于我的水平有限,至于如何獲取我在這里不做介紹。我們可以模擬一下,先正常訪問此項目,然后通過瀏覽器查看SessionID,以此得到一個合法的用戶標識??梢栽谡埱箢^中看到此項ID
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Connection: keep-aliveCookie: Hm_lvt_bf1154ec41057869fceed66e9b3af5e7=1450428827,1450678226,1450851291,1450851486; PHPSESSID=2eiq9hcpu3ksri4r587ckt9jt7;Host: ******Referer: ******User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:41.0) Gecko/20100101 Firefox/41.0 得到sessionID以后,如果此用戶登錄成功,那么服務端的session里就有此用戶的信息了。
2. 獲取到SessionID以后,假如攻擊者已經知道修改密碼的接口,就可以直接修改此用戶的密碼了。如果攻擊者還沒有得到接口地址,可以通過查看頁面代碼找出接口地址。可以使用如下的命令
#curl --cookie "PHPSESSID=2eiq9hcpu3ksri4r587ckt9jt7" 頁面地址上面我們說過,在此例子中ajax代碼是寫在html頁面中的,所以在此頁面可以查看到接口地址
部分html代碼如下
html xmlns="http://www.w3.org/1999/xhtml" head var uid = $(".userid").val();$.post("/User/User/modifypass_do", oldpass:oldpass, newpass:newpass, userid:uid, function(data){ data = eval('(' +data+ ')'); $('.grant_info').html(infos[data.info]).show(); span input type="password" name="oldpass" id="textfield_o" placeholder="原密碼" /span span input type="password" name="newpass" id="textfield_n" placeholder="新密碼" /span span input type="password" name="confirmpass" id="textfield_c" placeholder="確認密碼" /span input type="button" value="確認修改" / 3. 得到接口以后可以通過curl 模擬post發送數據來修改密碼
命令如下
# curl --cookie "PHPSESSID=2eiq9hcpu3ksri4r587ckt9jt7" -d oldpass=111111 -d newpass=000000 -d userid=用戶id 接口地址如果此用戶已經登錄,那么攻擊者可以通過執行以上命令修改用戶的密碼。
解決方法
對于以上方式的攻擊,我們可以通過使驗證方式復雜化來加強其安全性。其中一種方式就是利用請求頭中的User-Agent項來加強其安全性
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Connection: keep-aliveCookie: Hm_lvt_bf1154ec41057869fceed66e9b3af5e7=1450428827,1450678226,1450851291,1450851486; PHPSESSID=2eiq9hcpu3ksri4r587ckt9jt7;Host: ******Referer: ******User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:41.0) Gecko/20100101 Firefox/41.0在項目開始的時候最初我們只是用了session_start()函數來開啟session?,F在我們可以在session_start() 下面 添加這段代碼
$_SESSION[‘User_Agent'] = md5($_SERVER[‘HTTP_USER_AGENT']);然后在每次判斷是否登錄的時候,添加判斷條件如下
If(isset($_SESSION[‘userid']) && $_SESSION[‘User_Agent'] == md5($_SERVER[‘HTTP_USER_AGENT'])){ return true;這樣就可以避免上述簡單的攻擊。
總結:
當然,實際情況中的攻擊遠非這么簡單,首先在獲取SessionID這一步就比較困難,然后就是和服務端交互的代碼盡量加密,可以避免上述的情況。在我們第二次修改代碼以后,可以增加攻擊的復雜程度,并不能杜絕攻擊。攻擊的方式多種多樣,這里只是一種簡單的方式,僅提供一種思路,但是原理是一樣的,在實際情況中可以根據實際情況增強我們代碼的安全程度。這里只是分享自己在工作中碰到的問題,權當拋磚引玉,希望大家可以進一步深入學習。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
超碰日本道色综合久久综合| 精品久久久久久中文字幕一区奶水| 久久久精品999| 不用播放器成人网| 欧美在线中文字幕| 欧美视频在线免费| 国产区亚洲区欧美区| 日韩在线一区二区三区免费视频| 亚洲国产私拍精品国模在线观看| 亚洲第一天堂无码专区| 国产精品一区二区久久| 日韩欧美国产视频| 成人福利在线观看| 国产精品久久久久久av福利| 91精品视频免费观看| 日本精品va在线观看| 精品欧美激情精品一区| 亚洲国产欧美日韩精品| 成人午夜一级二级三级| 亚洲高清免费观看高清完整版| 欧美伊久线香蕉线新在线| 疯狂蹂躏欧美一区二区精品| 国产精品第1页| 国产精品va在线播放我和闺蜜| 国产成人精品亚洲精品| 亚洲欧美变态国产另类| 亚洲天天在线日亚洲洲精| 亚洲高清一二三区| 久久久久久久久久久久久久久久久久av| 亚洲摸下面视频| 亚洲一区二区在线| 91免费视频国产| 亚洲精品xxx| 国产亚洲精品激情久久| 91久久久久久久久久| 97色在线视频| 久久久久www| 国产欧美久久久久久| 日本sm极度另类视频| 疯狂做受xxxx高潮欧美日本| 久久影院资源站| 91av视频导航| 日韩av片免费在线观看| 欧美亚洲国产精品| 国产精品毛片a∨一区二区三区|国| 久久久久久国产免费| 亚洲欧美在线看| 欧美在线视频播放| 国产视频精品一区二区三区| 欧美亚洲第一页| 国产亚洲精品久久久久久| 国产日产久久高清欧美一区| 精品欧美一区二区三区| 亚洲天堂影视av| 国产精品爽爽ⅴa在线观看| 亚洲一区国产精品| 日韩在线小视频| 精品性高朝久久久久久久| 久久久亚洲影院| 亚洲色图国产精品| 亚洲色图日韩av| 在线精品视频视频中文字幕| 亚洲国产另类久久精品| 日本亚洲欧美三级| 永久免费毛片在线播放不卡| 亚洲第一页在线| 国产精品va在线| 国产免费一区二区三区香蕉精| 91久久综合亚洲鲁鲁五月天| 影音先锋日韩有码| 国产精品高潮呻吟久久av黑人| 亚洲影院污污.| 色吧影院999| 久久综合色88| 欧美一区三区三区高中清蜜桃| 中文字幕亚洲第一| 少妇精69xxtheporn| 欧美日韩中文字幕在线| 日韩av在线影院| 97视频在线播放| 亚洲精品永久免费精品| 亚洲精品一区在线观看香蕉| 欧美激情视频在线免费观看 欧美视频免费一| 韩国美女主播一区| 亚洲人成电影在线播放| 亚洲一区二区中文| 亚洲已满18点击进入在线看片| 亚洲男人天堂视频| 5278欧美一区二区三区| 精品国产31久久久久久| 亚洲精品国产精品国产自| 欧美日韩国产91| 亚洲欧美国产视频| 亚洲经典中文字幕| 国产成人一区二区三区| 国产精品1区2区在线观看| 欧美一区深夜视频| 欧美激情精品久久久久久| 亚洲无限av看| 成人黄色网免费| 国产精品丝袜视频| 久久亚洲精品视频| 尤物tv国产一区| 国产精品成人免费电影| 亚洲美女视频网| 国产aⅴ夜夜欢一区二区三区| 国模私拍一区二区三区| 韩国美女主播一区| 欧美在线激情视频| 久久精品亚洲精品| 色婷婷**av毛片一区| 亚洲a级在线观看| 欧美精品久久久久久久| 国产精品白丝av嫩草影院| 国产精品久久久久9999| 亚州欧美日韩中文视频| 国产亚洲欧美日韩一区二区| 国内精品久久久| 亚洲国产一区二区三区四区| 国产精品久久久久999| 奇米四色中文综合久久| 日韩精品福利在线| 久久人人爽国产| 亚洲欧美国产va在线影院| 国产欧美一区二区三区四区| 久久天天躁狠狠躁夜夜躁2014| 欧美精品午夜视频| 日韩福利伦理影院免费| 久久夜精品va视频免费观看| 久久久精品一区二区| 成人国内精品久久久久一区| 国内精品久久久久影院 日本资源| 亚洲成人精品av| 国产一区二区三区在线免费观看| 国产精品免费一区| 成人精品视频在线| 久久久久日韩精品久久久男男| 国产精品三级美女白浆呻吟| 97视频在线观看免费高清完整版在线观看| 日韩欧美在线免费观看| 欧美大尺度激情区在线播放| 久久亚洲精品一区二区| 欧美性猛交99久久久久99按摩| 国产丝袜高跟一区| 国产成人精品国内自产拍免费看| 在线视频精品一| 国产精品第1页| 欧美激情在线一区| 精品国产一区久久久| 欧美男插女视频| 欧美黄色片在线观看| 国产精品成人观看视频国产奇米| 欧美日韩另类视频| 国产精品99蜜臀久久不卡二区| 激情懂色av一区av二区av| 日韩在线免费视频观看| 国产精品电影在线观看| 欧美黄色成人网| 日韩专区中文字幕| 国产精品精品视频一区二区三区| 久久久免费高清电视剧观看| 欧美人与性动交a欧美精品| 亚洲精品色婷婷福利天堂| 欧美精品18videos性欧|