电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP安全-會話數據暴露(二)

瀏覽:95日期:2022-09-11 18:16:51
會話數據暴露

當你關注于防止源碼的暴露時,你的會話數據只同樣存在著風險。在默認情況下,SESSION保存在/tmp目錄下。這樣做在很多情形下是很方便的,其中之一是所有用戶都有對/tmp的寫入權限,這樣Apache同樣也有權限進行寫入。雖然其他用戶不能直接從shell環境讀取這些會話文件,但他們可以寫一個簡單的腳本來進行讀?。?/p>

<?php

header(’Content-Type: text/plain’);

session_start();

$path = ini_get(’session.save_path’);

$handle = dir($path);

while ($filename = $handle->read())

{

if (substr($filename, 0, 5) == ’sess_’)

{

$data = file_get_contents('$path/$filename');

if (!empty($data))

{

session_decode($data);

$session = $_SESSION;

$_SESSION = array();

echo 'Session [' . substr($filename, 5) . ']n';

print_r($session);

echo 'n--nn';

}

}

}

?>

這個腳本在session.save_path所定義的會話文件保存目錄中搜索以sess_為前綴的文件。找到文件后,即對它的內容進行解析并用print_r()函數顯示它的內容。這樣其它開發者就容易地取得了你的用戶的會話數據。

解決這個問題的最好方法是把你的會話數據存入用用戶名和密碼保護的數據庫中。由于數據庫的訪問是受控的,這樣就多了一層額外的保護。通過應用前節中提及的技巧,數據庫可以為你的敏感數據提供一個安全的存放地,同時你應該保持警惕,你的數據庫安全性正變得越來越重要。

為在數據庫中保存會話數據,首先需要建立一個數據表:

CREATE TABLE sessions

(

id varchar(32) NOT NULL,

access int(10) unsigned,

data text,

PRIMARY KEY (id)

);

如果你使用的是MySQL,則表結構描述如下:

mysql> DESCRIBE sessions;

+--------+------------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+------------------+------+-----+---------+-------+

| id | varchar(32) | | PRI | | |

| access | int(10) unsigned | YES | | NULL | |

| data | text | YES | | NULL | |

+--------+------------------+------+-----+---------+-------+

如要使會話數據能保存在此表中,你需要使用session_set_save_handler( )函數來編輯PHP的內建會話機制:

<?php

session_set_save_handler(’_open’,

’_close’,

’_read’,

’_write’,

’_destroy’,

’_clean’);

?>

Each of these six arguments is the name of a function that you must write. These functions handle the following tasks:

以上的六個參數每一個都代表著需要你編寫的函數的名稱,他們對下面的任務進行處理:

l打開會話存儲

l關閉會話存儲

l讀取會話數據

l寫入會話數據

l消滅會話數據

l清除舊會話數據

我有意使用了有意義的名稱,這樣你可以一下看出它們的目的。命名是任意的,但你可能希望用下劃線開頭(如此處所示)或其它的命名約定來防止名稱沖突。下面是這些函數(使用MySQL)的示例:

<?php

function _open()

{

global $_sess_db;

$db_user = $_SERVER[’DB_USER’];

$db_pass = $_SERVER[’DB_PASS’];

$db_host = ’localhost’;

if ($_sess_db = mysql_connect($db_host, $db_user, $db_pass))

{

return mysql_select_db(’sessions’, $_sess_db);

}

return FALSE;

}

function _close()

{

global $_sess_db;

return mysql_close($_sess_db);

}

function _read($id)

{

global $_sess_db;

$id = mysql_real_escape_string($id);

$sql = 'SELECT data

FROM sessions

WHERE id = ’$id’';

if ($result = mysql_query($sql, $_sess_db))

{

if (mysql_num_rows($result))

{

$record = mysql_fetch_assoc($result);

return $record[’data’];

}

}

return ’’;

}

function _write($id, $data)

{

global $_sess_db;

$access = time();

$id = mysql_real_escape_string($id);

$access = mysql_real_escape_string($access);

$data = mysql_real_escape_string($data);

$sql = 'REPLACE

INTO sessions

VALUES (’$id’, ’$access’, ’$data’)';

return mysql_query($sql, $_sess_db);

}

function _destroy($id)

{

global $_sess_db;

$id = mysql_real_escape_string($id);

$sql = 'DELETE

FROM sessions

WHERE id = ’$id’';

return mysql_query($sql, $_sess_db);

}

function _clean($max)

{

global $_sess_db;

$old = time() - $max;

$old = mysql_real_escape_string($old);

$sql = 'DELETE

FROM sessions

WHERE access < ’$old’';

return mysql_query($sql, $_sess_db);

}

?>

你必須要在session_start( )之前調用session_set_save_handler( )函數,但你可以在任何地方對這些函數本身進行定義。

這個流程的漂亮之處在于你無須對代碼進行編輯或變化使用會話的方式。$_SESSION依然存在,行為依舊,還是由PHP來產生與傳遞會識標識,對有關會話的配置變更同樣還會生效。所有你需要做的只是調用這一個函數(同時建立由它指定的所有函數),PHP就會照顧余下的事情。

標簽: PHP
相關文章:
主站蜘蛛池模板: 万濠影像仪(万濠投影仪)百科-苏州林泽仪器| 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | NM-02立式吸污机_ZHCS-02软轴刷_二合一吸刷软轴刷-厦门地坤科技有限公司 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 哈尔滨治「失眠/抑郁/焦虑症/精神心理」专科医院排行榜-京科脑康免费咨询 一对一诊疗 | 电子巡更系统-巡检管理系统-智能巡检【金万码】 | 周口风机|周风风机|河南省周口通用风机厂 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | 济南品牌设计-济南品牌策划-即合品牌策划设计-山东即合官网 | 北京发电机出租_发电机租赁_北京发电机维修 - 河北腾伦发电机出租 | 网站seo优化_seo云优化_搜索引擎seo_启新网络服务中心 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 上海防爆真空干燥箱-上海防爆冷库-上海防爆冷柜?-上海浦下防爆设备厂家? | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | 天长市晶耀仪表有限公司 | 岩棉板|岩棉复合板|聚氨酯夹芯板|岩棉夹芯板|彩钢夹芯板-江苏恒海钢结构 | 半容积式换热器_北京浮动盘管换热器厂家|北京亿丰上达 | 自恢复保险丝_贴片保险丝_力特保险丝_Littelfuse_可恢复保险丝供应商-秦晋电子 | 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 广东青藤环境科技有限公司-水质检测 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 盘煤仪,盘料仪,盘点仪,堆料测量仪,便携式激光盘煤仪-中科航宇(北京)自动化工程技术有限公司 | 牛奶检测仪-乳成分分析仪-北京海谊| 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 便携式谷丙转氨酶检测仪|华图生物科技百科| 2025第九届世界无人机大会 | 地磅-地秤-江阴/无锡地磅-江阴天亿计量设备有限公司_ | 云南成考网_云南成人高考报名网| 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 磁力抛光机_磁力研磨机_磁力去毛刺机-冠古设备厂家|维修|租赁【官网】 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 液氮罐_液氮容器_自增压液氮罐-北京君方科仪科技发展有限公司 |