大家好,我正在使用CodeIgniter PHP framework開發一個照片共享網站。這個想法是,人們可以上傳他們的照片,管理他們(通過某種文件瀏覽器,允許他們創建子文件夾,拖動文件等),並編輯它們(一些基本的東西,如調整大小,旋轉和裁剪開始,以及稍後,我將添加一些高級功能)。從其用戶保護PHP文件管理器
我已經爲CI(Redux Authentication 2 Beta)實施了第三方身份驗證解決方案,現在我正在集成JS/PHP文件管理器(AjaxExplorer),但問題在於管理文件的PHP後端(移動,複製等)對ajax調用的用戶輸入過於信任。例如,它在做這樣的事情(簡化清楚起見):
move_uploaded_file($_FILES['upload']['tmp_name'], $root.$username.$_POST['destination_dir']);
正如你所看到的,有明顯的安全問題,因爲它盲目地接受任何路徑的用戶拋出了!我已經可以看到有人發送類似「../AnotherUser/」的值作爲$ _POST ['destination_dir']的值。
我的問題是:什麼是「沙盒」用戶的最佳方式,以便只允許他管理自己的數據?我只是驗證+過濾輸入,希望抓住每一次入侵的企圖?有沒有專門解決這個特定問題的庫/包?
我認爲這個問題必須在任何(足夠成熟的)項目中解決,這使得用戶可以通過網絡瀏覽器管理他們的文件,所以我期望找到一些明確的指導方針(因爲有一個很多關於SQL注入,XSS,CSRF等),但我想我沒有使用正確的關鍵字。
具有所有無效字符的字符串被映射到服務器根文件夾。 – bobince 2009-03-03 21:10:45
感謝您的回答,但是至少在* NIX世界中,AFAIK點,斜槓和反斜槓都是可以接受的命名文件夾的字符。 – lima 2009-03-03 21:12:04