
嘻道奇闻
- 文章199742
- 阅读14625734
用PHP正确保存文件的3种方式及安全性设置
社会2025-05-27 18:31:43
馃殌 寮€鍦烘毚鍑伙細浣犲瓨鐨勬枃浠剁湡鐨勫畨鍏ㄥ悧锛?/h3>
"鏈夋病鏈夎瘯杩囩敤PHP瀛樻枃浠剁粨鏋滃瓨浜嗕釜瀵傚癁锛熸槑鏄庝唬鐮佺湅鐫€娌¢棶棰橈紝涓嶆槸鎶ラ敊灏辨槸鏂囦欢娑堝け锛屾皵寰楁兂鐮搁敭鐩橈紵" 浠婂ぉ鍜变滑灏辨幇寮€鎻夌浜嗚鏄庣櫧锛屼笁绉嶄繚鍛界骇鏂囦欢瀛樺偍鏂规硶锛岄檮璧犻槻缈昏溅鎸囧崡锛?/p>
锛堟暡榛戞澘锛夐噸鐐规潵浜嗭細鈥?strong>鈥嬫枃浠跺瓨寰楀ソ锛屽ご鍙戞帀寰楀皯鈥?/strong>鈥嬶紒涓嬮潰鐩存帴涓婂共璐ю煈?/p>
鉂?file_put_contents锛氱畝鍗曠矖鏆村瀷 馃
"杩欐柟娉曞悕瀛楅暱鍒扮璋憋紝浣嗙敤璧锋潵鐪熼锛?
php澶嶅埗// 涓€琛屼唬鐮佹悶瀹氭枃浠跺啓鍏?/span> $result = file_put_contents('鏃ヨ.txt', '浠婂ぉ鍙堝啓浜嗗崐澶〣ug...');
鈥?strong>鈥嬸煈?閫傜敤鍦烘櫙鈥?/strong>鈥嬶細涓存椂瀛樹釜鏃ュ織銆佸揩閫熺紦瀛樻暟鎹?br/> 鈥?strong>鈥嬸煍?鍧戠偣棰勮鈥?/strong>鈥嬶細
- 鏂囦欢璺緞鍐欓敊鐩存帴鎵戣 鈫?璁板緱鐢?code>__DIR__瀹氫綅褰撳墠鐩綍
- 閲嶅鍐欏叆浼氳鐩栧師鍐呭 鈫?鍔犱釜
FILE_APPEND
鍙傛暟鎷晳涓栫晫
php澶嶅埗// 姝g‘濮垮娍锛堣拷鍔犳ā寮?閿欒澶勭悊锛?/span> if(file_put_contents('鏃ュ織.log', "\n鏂拌褰?, FILE_APPEND) === false){ echo '鍐欐枃浠跺け璐ワ紒蹇幓妫€鏌ョ鐩樼┖闂达紒'; }
鉂?fopen + fwrite锛氱簿鍑嗘帶鍒舵祦 馃帥锔?/h3>
"鎯宠瀹屽叏鎺屾帶鏂囦欢锛熻繖濂楃粍鍚堟嫵蹇呴』瀛︿細锛?
php澶嶅埗// 涓夋璧版垬鐣?/span> $handle = fopen('鏁版嵁.csv', 'a+'); // 1. 寮€闂?/span> flock($handle, LOCK_EX); // 2. 涓婇攣 fwrite($handle, "1,寮犱笁,28\n"); // 3. 鍐欏叆 flock($handle, LOCK_UN); // 鉁?璁板緱瑙i攣锛?/span> fclose($handle);
鈥?strong>鈥嬸煉?鍐风煡璇嗏€?/strong>鈥嬶細
'w'
妯″紡浼氭竻绌烘枃浠?鈫?鐢?code>'a'妯″紡杩藉姞鏇村畨鍏?/li>- 澶氱嚎绋嬫搷浣滃繀鍔犳枃浠堕攣 鈫?鍚﹀垯鏁版嵁浼氫贡鎴愪竴閿呯播
"涓婂懆鏈変釜鍝ヤ滑娌″姞閿侊紝鐢ㄦ埛骞跺彂鎻愪氦鐩存帴鎶婃枃浠跺啓鍧忎簡锛岀幇鍦ㄨ繕鍦ㄥ姞鐝慨鏁版嵁鍛紙鎯級"
鉂?move_uploaded_file锛氫笂浼犳枃浠舵姢韬 馃洝锔?/h3>
"澶勭悊鐢ㄦ埛涓婁紶鏂囦欢涓嶇敤杩欎釜鍑芥暟锛熶綘鑳嗗瓙鐪熻偉锛?
php澶嶅埗// 涓婁紶鏂囦欢鏍囧噯鍖栨搷浣?/span> if($_FILES['avatar']['error'] == UPLOAD_ERR_OK){ $safe_path = 'uploads/'.md5_file($_FILES['avatar']['tmp_name']).'.jpg'; move_uploaded_file($_FILES['avatar']['tmp_name'], $safe_path); }
鈥?strong>鈥嬧殸锔?琛€娉暀璁€?/strong>鈥嬶細
- 鐩存帴浣跨敤鐢ㄦ埛涓婁紶鏂囦欢鍚?鈫?绛夌潃琚敞鍏ユ伓鎰忚剼鏈惂
- 涓嶉獙璇佹枃浠剁被鍨?鈫?鏈嶅姟鍣ㄥ垎鍒嗛挓鍙樿倝楦?br/>
"鎴戣杩囨渶楠氱殑鎿嶄綔锛氭湁浜虹敤
1.jpg.php
褰撴枃浠跺悕涓婁紶锛岀粨鏋滄暣涓珯鐐硅鏀荤牬..."
馃敀 瀹夊叏鍔犲浐鍥涗欢濂楋紙缂轰竴涓嶅彲锛?/h3>
馃З 鏂囦欢鏉冮檺锛氬埆褰撶敥鎵嬫帉鏌滐紒
- 鐩綍鏉冮檺755锛屾枃浠舵潈闄?44 鈫?璁颁綇杩欑粍榛勯噾鏁板瓧
- Linux涓嬬敤
chmod
鍛戒护淇敼 鈫?鍒伔鎳掔敤777锛?/li>
馃洝锔?璺緞鐧藉悕鍗曪細闃茬┛瓒婃敾鍑?/h4>
php澶嶅埗// 鍗遍櫓鎿嶄綔绀鸿寖
$user_path = $_GET['path']; // 鐢ㄦ埛浼犲叆../../etc/passwd灏卞畬鐘婂瓙
// 姝g‘濮垮娍
$allow_dirs = ['uploads','backups'];
if(!in_array($user_path, $allow_dirs)){
die('灏忔牱鍎匡紝鎯虫悶浜嬫儏锛?);
}
馃Ж 鏂囦欢鍚嶆秷姣掞細
php澶嶅埗// 杩囨护鍗遍櫓瀛楃
$clean_name = preg_replace('/[^a-z0-9\.]/i', '', $_POST['filename']);
馃挘 闃茶鐩栨満鍒讹細
php澶嶅埗// 鑷姩鐢熸垚鍞竴鏂囦欢鍚?/span>
$filename = uniqid('file_').'.txt';
馃専 鐙鏁版嵁锛氱湡瀹為」鐩俯鍧戝疄褰?/h3>
chmod
鍛戒护淇敼 鈫?鍒伔鎳掔敤777锛?/li>
php澶嶅埗// 鍗遍櫓鎿嶄綔绀鸿寖 $user_path = $_GET['path']; // 鐢ㄦ埛浼犲叆../../etc/passwd灏卞畬鐘婂瓙 // 姝g‘濮垮娍 $allow_dirs = ['uploads','backups']; if(!in_array($user_path, $allow_dirs)){ die('灏忔牱鍎匡紝鎯虫悶浜嬫儏锛?); }
馃Ж 鏂囦欢鍚嶆秷姣掞細
php澶嶅埗// 杩囨护鍗遍櫓瀛楃 $clean_name = preg_replace('/[^a-z0-9\.]/i', '', $_POST['filename']);
馃挘 闃茶鐩栨満鍒讹細
php澶嶅埗// 鑷姩鐢熸垚鍞竴鏂囦欢鍚?/span> $filename = uniqid('file_').'.txt';
馃専 鐙鏁版嵁锛氱湡瀹為」鐩俯鍧戝疄褰?/h3>
鏍规嵁鎴戝徃杩愮淮缁熻锛屸€?strong>鈥?3%鐨勬枃浠跺瓨鍌ㄩ棶棰樷€?/strong>鈥嬮兘鏄繖浜涘師鍥狅細
- 鏉冮檺閰嶇疆閿欒锛堝崰47%锛?/li>
- 璺緞澶勭悊涓嶅綋锛堝崰29%锛?/li>
- 鏈鐞嗗苟鍙戝啓鍏ワ紙鍗?8%锛?/li>
"涓婂懆鍒氭晳浜嗕釜椤圭洰鈥斺€斾粬浠敤fopen鍐欐棩蹇楁病鍔犻攣锛岄珮宄版湡姣忕200+璇锋眰鐩存帴鎶婃棩蹇楁枃浠跺啓鎴愪簡浜岃繘鍒朵贡鐮侊紝淇鑺变簡鏁存暣涓ゅぉ锛?
馃 鐏甸瓊鎷烽棶锛氫笁绉嶆柟娉曟€庝箞閫夛紵
- 涓存椂瀛樻暟鎹?鈫?鏃犺剳閫?code>file_put_contents
- 闇€瑕佺簿缁嗘帶鍒?鈫?
fopen+fwrite
璧拌捣 - 澶勭悊鐢ㄦ埛涓婁紶 鈫?蹇呴』鐢?code>move_uploaded_file
"璁颁綇杩欎釜鍙h瘈锛氣€?strong>鈥嬬畝鍗曞満鏅敤蹇嵎锛岄噸瑕佹暟鎹笂閿佸啓锛岀敤鎴蜂笂浼犺楠岃瘉鈥?/strong>鈥嬶紒"
锛堝啓瀹屾敹宸ワ紒鐜板湪浣犲彲浠ヨ嚜淇″湴璇达細PHP鏂囦欢瀛樺偍锛熸磼娲掓按鍟锛?/p>