2012-09-27 19 views
0

下面的代碼是可能的嗎?或否,因爲它的安全問題?我想從一個文件夾到另一個文件夾,所以如果fwrite函數位於/ 1,我可以在/ 2上寫入一個.txt文件嗎?fwrite跨域?

<?php 
$myFile = "../news/derp.txt"; 
$fh = fopen('derp.txt', 'w') or die("File Can't Be Written To."); 
$stringData = "Yo, ."; 
fwrite($fh, $stringData); 
fclose($fh); 
?> 
+1

您不是跨域寫字,而是寫入同一文件系統上的不同文件。如果Web服務器用戶對文件具有寫入權限,則它將正常工作。 –

+0

只要在'localhost'的美妙境界嘗試它。 – moonwave99

+0

它取決於文件權限。 – SIFE

回答

3

只要腳本在它具有寫權限的文件的上下文中執行,它應該工作。

安全問題需要更多關於您對它做什麼以及第二個目錄是否公開顯示的更多信息。

+0

那麼,我將如何指定位置?如果PHP查看它所在的文件夾,我可以指定將解析到本地主機的域嗎? – Necrohhh

+0

不,指定一個域將導致它使用HTTP(根據服務器的設置,這可能會也可能不會工作)。 –

+0

您必須指定您嘗試寫入的區域的文件系統位置,並且必須將其作爲第一個域在服務器上裝入。 –

1

遠程文件很可能不是由PHP寫的,但如果它是一個本地文件夾,它只是取決於PHP是否有寫訪問該文件夾+文件。

閱讀:

「如果PHP認爲filename指定一個本地文件,那麼它會嘗試在該文件上打開一個流文件必須是PHP可以訪問,所以你需要確保的。文件訪問權限允許此訪問權限。如果您啓用了安全模式,或者open_basedir進一步限制可能適用。「

http://php.net/manual/en/function.fopen.php

1

PHP可以寫入文件系統的任何地方。 PHP並不侷限於運行它的服務器的域,這就是LFI如此高效的原因。

1

PHP可以寫入任何有寫訪問權限的目錄。如果您無法訪問它,就像是共享服務器上的其他人的帳戶一樣,那麼您可能無法做到這一點。

0

我的問題的答案是肯定的。我只是不知道情況,以及提升到文件的正確方法。這是最後的工作腳本。 從/1/fwrite.php寫入,這裏是腳本。

<?php 
$file = fopen("../2/derp.txt","w"); 
fwrite($file,"Hello World!"); 
fclose($file); 
?>