首页 > 社会 > 正文内容

用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>

鏍规嵁鎴戝徃杩愮淮缁熻锛屸€?strong>鈥?3%鐨勬枃浠跺瓨鍌ㄩ棶棰樷€?/strong>鈥嬮兘鏄繖浜涘師鍥狅細

  1. 鏉冮檺閰嶇疆閿欒锛堝崰47%锛?/li>
  2. 璺緞澶勭悊涓嶅綋锛堝崰29%锛?/li>
  3. 鏈鐞嗗苟鍙戝啓鍏ワ紙鍗?8%锛?/li>

"涓婂懆鍒氭晳浜嗕釜椤圭洰鈥斺€斾粬浠敤fopen鍐欐棩蹇楁病鍔犻攣锛岄珮宄版湡姣忕200+璇锋眰鐩存帴鎶婃棩蹇楁枃浠跺啓鎴愪簡浜岃繘鍒朵贡鐮侊紝淇鑺变簡鏁存暣涓ゅぉ锛?


馃 鐏甸瓊鎷烽棶锛氫笁绉嶆柟娉曟€庝箞閫夛紵

  • 涓存椂瀛樻暟鎹?鈫?鏃犺剳閫?code>file_put_contents
  • 闇€瑕佺簿缁嗘帶鍒?鈫?fopen+fwrite璧拌捣
  • 澶勭悊鐢ㄦ埛涓婁紶 鈫?蹇呴』鐢?code>move_uploaded_file

"璁颁綇杩欎釜鍙h瘈锛氣€?strong>鈥嬬畝鍗曞満鏅敤蹇嵎锛岄噸瑕佹暟鎹笂閿佸啓锛岀敤鎴蜂笂浼犺楠岃瘉鈥?/strong>鈥嬶紒"

锛堝啓瀹屾敹宸ワ紒鐜板湪浣犲彲浠ヨ嚜淇″湴璇达細PHP鏂囦欢瀛樺偍锛熸磼娲掓按鍟锛?/p>

搜索