RicardoR Posted February 17, 2008 at 06:26 PM Report Share #167505 Posted February 17, 2008 at 06:26 PM Boas Estou com um problema relativo à abertura de todos os ficheiros de um formato, neste caso .txt de uma determinada directoria. A minha ideia era apos ter esses ficheiros numa variavel mostra-los o que depois me parece ser mais fácil. Alguém me dá uma maozinha xD? Abraço Link to comment Share on other sites More sharing options...
saunde Posted February 17, 2008 at 06:37 PM Report Share #167507 Posted February 17, 2008 at 06:37 PM código ? Um blog :Sem Cafeína Link to comment Share on other sites More sharing options...
RicardoR Posted February 17, 2008 at 09:59 PM Author Report Share #167547 Posted February 17, 2008 at 09:59 PM Desculpem de não ter posto o código ? <?php $dir = "/home/a6483987/public_html/nc"; $sub = ($_GET['dir']); $path = '/home/a6483987/public_html/nc'; $path = $path . "$sub"; $dh = opendir($path); while (($file = readdir($dh)) !== false) { if($file != "." && $file != "..") { if (substr($file, -4, -3) =="."){ $ler_texto=fopen($file,"r"); while(($a=fgets($ler_texto,1000)) !=false){ echo $a ; } fclose($ler_texto); }else{ echo " <a href='?dir=$sub/$file'><font face=candara color=#CCCCCC>$file</font></a><br />"; } } } closedir($dh); ?> Não está a dar com os seguintes erros : Warning: fopen(ola.txt) [function.fopen]: failed to open stream: No such file or directory in /home/a6483987/public_html/nc.php on line 20 Warning: fgets(): supplied argument is not a valid stream resource in /home/a6483987/public_html/nc.php on line 21 Warning: fclose(): supplied argument is not a valid stream resource in /home/a6483987/public_html/nc.php on line 24 Link to comment Share on other sites More sharing options...
djthyrax Posted February 17, 2008 at 10:39 PM Report Share #167551 Posted February 17, 2008 at 10:39 PM Parece-me bastante óbvio o erro: o ficheiro não existe. E esse script não é seguro, dava para explorar a máquina onde tens isso a correr. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
cyclop Posted February 18, 2008 at 01:27 AM Report Share #167586 Posted February 18, 2008 at 01:27 AM usa o glob "Quando eu for grande quero ser como o Celso" Link to comment Share on other sites More sharing options...
Guest id194 Posted February 18, 2008 at 02:06 AM Report Share #167601 Posted February 18, 2008 at 02:06 AM Parece-me bastante óbvio o erro: o ficheiro não existe. E esse script não é seguro, dava para explorar a máquina onde tens isso a correr. Como? ? Link to comment Share on other sites More sharing options...
djthyrax Posted February 18, 2008 at 02:12 AM Report Share #167604 Posted February 18, 2008 at 02:12 AM Como? ? Como o quê? Explorar? Dá uma olhada ao percuso do valor do $_GET['dir'], basta usar paths relativos que vou onde quiser. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Guest id194 Posted February 18, 2008 at 11:16 AM Report Share #167622 Posted February 18, 2008 at 11:16 AM Como o quê? Explorar? Dá uma olhada ao percuso do valor do $_GET['dir'], basta usar paths relativos que vou onde quiser. Mas ele está a fazer isto: $path = $path . "$sub"; E o $path já tem valor: $path = '/home/a6483987/public_html/nc'; Assim só podes andar para a frente e não para trás, e ao andar para frente se calhar é o que ele quer e não tem la nada que tu não possas ver... Ou então não estou a perceber. Link to comment Share on other sites More sharing options...
RicardoR Posted February 18, 2008 at 12:47 PM Author Report Share #167633 Posted February 18, 2008 at 12:47 PM Parece-me bastante óbvio o erro: o ficheiro não existe. E esse script não é seguro, dava para explorar a máquina onde tens isso a correr. O ficheiro está lá ola.txt...O erro não sei porque é que está a dar ... A variável abrange todos os ficheiros lá so tenho ola.txt Abraço Link to comment Share on other sites More sharing options...
djthyrax Posted February 18, 2008 at 01:10 PM Report Share #167634 Posted February 18, 2008 at 01:10 PM Mas ele está a fazer isto: $path = $path . "$sub"; E o $path já tem valor: $path = '/home/a6483987/public_html/nc'; Assim só podes andar para a frente e não para trás, e ao andar para frente se calhar é o que ele quer e não tem la nada que tu não possas ver... Ou então não estou a perceber. Teres /home/lulz/ ou /home/lulz/oi/../../ é a mesma coisa. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
fnds Posted February 18, 2008 at 02:21 PM Report Share #167647 Posted February 18, 2008 at 02:21 PM $root=dirname(__file__); $file=$root.$_get['dir']; atenção o script não está seguro...... Link to comment Share on other sites More sharing options...
RicardoR Posted February 18, 2008 at 07:12 PM Author Report Share #167725 Posted February 18, 2008 at 07:12 PM Mas alguém sabe resolver do erro? Sobre a segurança como por seguro e como se entrava na máquina? Abraço Link to comment Share on other sites More sharing options...
fnds Posted February 19, 2008 at 01:29 PM Report Share #167810 Posted February 19, 2008 at 01:29 PM a melhor maneira para pores seguro, é fazeres uma listagem dos ficheiros que desejas abrir, ex: $root=dirname(__file__).'/'; $ficheiros_autorizados=array('batatas.txt', 'couves.txt', 'RicardoR.coco'); if(in_array($_GET['file'],$ficheiros_autorizados)){ /*o código que queres ex:*/ include($file=$root.$_get['file']; } Link to comment Share on other sites More sharing options...
infopc Posted February 19, 2008 at 10:29 PM Report Share #167902 Posted February 19, 2008 at 10:29 PM parece-me bastante obvio onde tens $path = $path."$sub" deveria estar //aqui insere código que verifique se a string que vem GET é segura $path = $path.$sub sobre segurança bastava por no link da pagina algo como "index.php?dir=../../.." e andava logo 3 pastas para traz (confirmas djthyrax?) O que não tem solução, solucionado esta... Link to comment Share on other sites More sharing options...
djthyrax Posted February 19, 2008 at 11:32 PM Report Share #167919 Posted February 19, 2008 at 11:32 PM O facto de ele ter "$sub" não muda nada, não há aí erro algum. sobre segurança bastava por no link da pagina algo como "index.php?dir=../../.." e andava logo 3 pastas para traz (confirmas djthyrax?) Sim. Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Guest id194 Posted February 20, 2008 at 01:31 AM Report Share #167935 Posted February 20, 2008 at 01:31 AM Eu só não sabia era que fazer "/home/lulz/oi/../../abc/php/" era relamente fazer "/home/abc/php/" o que me parece mais lógico, mas segundo o exemplo que deste lá em cima djthyrax, ficaria mais "/home/lulz/abc/php/". Eu só não sabia que isto era possível. Acho que tudo o que programei até hoje tem falhas de segurança atão :X Link to comment Share on other sites More sharing options...
djthyrax Posted February 20, 2008 at 02:55 PM Report Share #167975 Posted February 20, 2008 at 02:55 PM Sim, tenho o ../ a mais no meu exemplo. 👍 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
MX+ Posted February 20, 2008 at 04:17 PM Report Share #167992 Posted February 20, 2008 at 04:17 PM Todos os endereços para ficheiros devem ter: $path = str_replace(array('/', '\'), '', $path); Desta forma eliminas todas as possibilidades de navegação 👍 « Link to comment Share on other sites More sharing options...
djthyrax Posted February 20, 2008 at 04:23 PM Report Share #167996 Posted February 20, 2008 at 04:23 PM Todos os endereços para ficheiros devem ter: $path = str_replace(array('/', '\'), '', $path); Desta forma eliminas todas as possibilidades de navegação 🙂 « Esqueceste-te de escapar a \ 👍 Mas sim, é isso. 😄 Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
MX+ Posted February 20, 2008 at 05:10 PM Report Share #168006 Posted February 20, 2008 at 05:10 PM Esqueceste-te de escapar a \ 😄 Mas sim, é isso. 😄 Já não é a primeira vez LOL Mas passa despercebido xD Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now