[PHP] File locali

curzio.maria

Nuovo Utente
14 Apr 2019
12
0
1
Buongiorno, oggi ho caricato sul server remoto ( ARUBA) uno script di prova che utilizzo in locale in ambiente EASYPHP.
Questo script controlla semplicemente la presenza di un file di testo (texto.txt) in una specifica directory del disco C con una chiamata alla funzione file_exist().
Bene, in locale la funzione torna TRUE, lo stesso script in remoto torna FALSE, non credo sia un problema legato alla sicurezza, non tento alcuna operazione sul file, solo verifico la sua presenza.

Ho provato con c:\\posto\\testo.txt , c:\posto\testo.txt , c://posto//testo.txt , c:/posto/testo.txt , nulla.
Il mio hosting su ARUBA è di tipo Linux.

Se qualcuno ha qualche suggerimento....

Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
devi distinguere, "come si dice", lato server e lato client
lato server rappresenta il server web che risponde alle chiamate inviate dal browser che sta sul lato client
quindi stanno operando due macchine diverse, un server ed un client

casualmente, quando hai installato il server web in locale, le due macchine coincidono

php lavora sulla macchina server ( lato server )

quando il server e di conseguenza php lavorano in locale, entrambi hanno accesso al disco c:\

quando il server é remoto ( aruba ), php accede al disco c:\ ( o equivalente linux ) del server,

nel caso specifico devi indirizzare il file ( da php ) con la notazione delle cartelle di linux
ed il file deve trovarsi sul server remoto

mai potrai accedere con php al disco c:\ locale proprio per ragioni di sicurezza
 

curzio.maria

Nuovo Utente
14 Apr 2019
12
0
1
Grazie per la cortese risposta.

Sebbene pensionato sono alle prime armi con PHP e faccio molta confusione.
Innanzi tutto credevo che l'ambiente di sviluppo, nel mio caso EASYPhp, separasse i due ambienti, remoto e locale anche in fase di sviluppo. Ovvero pensavo che ciò che funziona nella macchina locale (localhost) funziona anche in remoto. Evidentemente non è così.
Ho però un dubbio, meglio una curiosità, quando faccio l'upload di un file da php riesco a leggere la directory locale, per intenderci quella del disco c:\, riesco inoltre a ottenere informazioni sul file selezionato quindi, ma questa è la mia ipotesi, in qualche modo da php è possibile leggere il disco locale, ma forse faccio confusione tra PHP e HTML.

Chiudo, mi sarei atteso però dalla funzione di PHP almeno un warning dato che ho settato il gestore degli errori a ALL.

Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
separasse i due ambienti, remoto e locale
di fatto sono separati, ma il server agisce sul disco "c" e risponde al browser(client) di conseguenza

l'upload di un file
l'applicazione sul server ti da la possibilità di caricare il file
ed attraverso il browser "navighi" le directory per scegliere il file,
ma tu "autorizzi" l'operazione, compiendola

almeno un warning dato che ho settato il gestore degli errori a ALL.
può essere che l'errore sia presente nel log (bisogna vedere il setting di php.ini)
per le mie applicazioni invio i messaggi di errore in un file specifico (corredato del percorso)
PHP:
error_reporting(-1);
// ini_set('error_reporting'       , E_ALL | E_STRICT);
ini_set('display_errors'           , FALSE);
ini_set('log_errors'               , TRUE);
ini_set('error_log'                , '../errors/_PHPerrors.log');
 

curzio.maria

Nuovo Utente
14 Apr 2019
12
0
1
Grazie.
Aggiungo e provo.
Ho controllato su internet e pure in JS non è affatto banale accedere anche in sola lettura a files locali.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Ho controllato su internet e pure in JS non è affatto banale accedere anche in sola lettura a files locali
sul lato client non è consentito l'accesso al disco ( e non solo ) sia in html che js che con linguaggi di programmazione,
proprio per ragioni di sicurezza,
stiamo parlando di ambiente web (server/client)
hacker permettendo
 

curzio.maria

Nuovo Utente
14 Apr 2019
12
0
1
In effetti ho riletto l'articolo, era una lunga routine inviata da un programmatore indiano. Conosco il JS ancor meno del PHP e quindi ho dato per scontato che se un guru... a fine routine però i commenti cui non avevo badato lamentavano una serie di errori che verificavano usando la routine.
Bene, si far per dire, rinuncio.
Però è strano se almeno fosse possibile leggere, solo leggere, un file si potrebbe utilizzare una chiavetta USB per proteggere l'applicazione. Grazie di nuovo
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Se qualcuno ha qualche suggerimento....

Banalmente inserisci nella root di aruba (quella che viene puntata con un dominio es: miodominio.it) 2 file:
1- FILE.txt
1-index.php
nel file index.php aggiungi

PHP:
<?php

//leggo il contenuto del file
echo file_get_contents(__DIR__.'/FILE.txt');

//leggo la profondità delle directory e ricostruisco l'albero dalla root del disco assegnato
echo __FILE__;
dovrebbe leggerti il contenuto del file....

Per effettuare la lettura dei file si dovrebbe partire dalla root dell'applicazione, ma è possibile leggere anche file all'interno di tutte le partizioni montate, sia con php che con JS...
es:
Hosting Linux
/var/www/vhosts/dominio/htdocs/
/data/siti_web
/usr/bin

es: la mia app è posizionata in /var/www/html/miosito/index.php ma voglio leggere il file che si trova in /data/global/file.txt
con php è possibile leggere il file anche se in una partizione differente
PHP:
<?php
echo file_get_contents('/data/global/file.txt');
?>
Come vedi leggi tutto da tutte le parti, falso il contrario....
etc.... Analoga la lettura per il disco locale C...

PHP una volta installato e configurato diventa di sistema quindi ha il diritto di leggere su ogni partizione e su tutte le risorse della macchina dove è installato... Naturalmente essendo hosting e non VPS o Server dedicato o Cloud avrai accesso solo alle tue specifiche directory....

Utilizzando JS si potrebbe prevedere l'uso di node lato server senza php, il risultato sarebbe uguale....
es https://code-maven.com/reading-a-file-with-nodejs
Codice:
var fs = require('fs');
fs.readFile('DATA', 'utf8', function(err, contents) {
console.log(contents);
});
console.log('after calling readFile');
 

curzio.maria

Nuovo Utente
14 Apr 2019
12
0
1
Grazie per la risposta.
Sono riuscito a leggerla solo ora e... non ho capito esattamente cosa suggerisci.
Non sono un grande esperto di PHP, anzi mi rendo conto sempre più dei miei limiti e quindi se non capisco è in tutta evidenza colpa mia.

Vengo al punto, sono riuscito a trasformare un applicativo da VB a php, stranamente funziona correttamente, si tratta di una semplice applicazione che però usa in modo 'pesante' mysql utilizzando OBJ-PDO.

Si tratta di una applicazione che registra spese, rimborsi e fatture, limitata a meno di 5o utenti (dipendenti aziendali) per evidenti ragioni di sicurezza, dopo aver applicato filtri etc volevo utilizzare delle chiavi USB per autenticare gli utenti, oltre alla password (20 caratteri + salt di 25 caratteri) il tutto ovviamente funzionava perfettamente in locale (EASYPHP su c:\), in effetti nell'ambiente di sviluppo riesco a leggere quello che voglio, dischi di rete compresi (mappati) questo da locale.
Da remoto non riesco a leggere file che non siano all'interno dello spazio a me assegnato da ARUBA.

Ho chiesto al servizio clienti e il mio spazio (HOSTING) è limitato alla directory nomedominio e alle sue subdirectory, non esiste altro spazio utile, e questo peraltro pone problemi noti i sicurezza.

Sempre secondo loro non è possibile in alcun modo leggere, da remoto (quindi da ARUBA) alcun file locale ovvero nel file system dell'utente collegato al sito e quindi al mio applicativo, aggiungo che parevano schifati da una domanda per loro tanto banale.

Ho perso un giorno intero in internet per trovare una possibile soluzione, francamente mi pareva IMPOSSIBILE che una operazione tanto banale fosse tanto complicata (se non impossibile .. e mi ripeto) ma ....

Da quanto ho capito, tu riesci a leggere in ogni posizione del file system del PC dove hai installato (localmente) PHP, questo posso farlo anche io, e in effetti l'ho fatto fin dal principio, ma a me serve serve una cosa del tutto diversa leggere dalla macchina dell'utente che si collega.

Grazie per la cortese risposta, e se per caso hai osservazioni ti prego di non esitare, evidentemente sei persona competente dalla quale posso solo imparare.
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
Sempre secondo loro non è possibile in alcun modo leggere, da remoto (quindi da ARUBA) alcun file locale ovvero nel file system dell'utente collegato al sito e quindi al mio applicativo, aggiungo che parevano schifati da una domanda per loro tanto banale.
In realtà è possibile leggere anche da un qualsiasi client, solo che i sistemi di sicurezza bloccano l'esecuzione di sw maligno (viene interpretato in questo modo), quindi per ovvi motivi di tempo e sicurezza sarebbe un NON si può leggere un file dal client (sappi che non è vero)...

leggere dalla macchina dell'utente che si collega
Potresti creare un sw/app client che si occupi di eseguire in python/php un server web così da poterlo interrogare lanciando chiamate in localhost:porta_client, in questo modo saresti capace di leggere qualsiasi contenuto....
Lo sforzo è molto grande, e forse diventa una strada poco percorribile...

Non ho idea di che tipo di file devi leggere, magari uno schema logico/funzionale riesce a far capire meglio l'intento...

Al massimo potresti prevedere la creazione di una VAPP sul server locale da interrogare, ossia crei il semplice ed efficace server rest, in questo modo anche se da remoto potrai sempre contattare il server locale per utilizzare la sua capacità di lettura e scrittura sui dischi locali e remoti...
 

curzio.maria

Nuovo Utente
14 Apr 2019
12
0
1
Salve, in realtà sarebbe sufficiente controllare la presenza sul pc locale, quello utilizzato dall'utente che tenta di connettersi, di un file di testo qualsiasi, ad esempio eidos.eidos.it, che un utente non autorizzato abbia lo stesso file nella stessa posizione è praticamente impossibile.

Meglio, ma non indispensabile come detto, sarebbe poter leggere questo file e confrontare una chiave cifrata ivi contenuta con una analoga registrata nel database, chiave che potrebbe, ad esempio, variare in funzione di una serie di parametri prestabiliti, etc etc.

La soluzione che ho scelto di adottare, amo le cose semplici, (rasoio di Occam) è stata la seguente : verificato che il porting (una volta si diceva così) dell'applicazione da VB a PHP è completo e funziona ho consegnato i sorgenti e lasciato all'utilizzatore ogni decisione in merito ai problemi di sicurezza che sono enormi e oltre le mie capacità, a partire dal fatto che l'hosting di ARUBA, pure eccellente, non preveda una directory non accessibile da eventuali malintenzionati.

Grazie per i suggerimenti.
 
Discussioni simili
Autore Titolo Forum Risposte Data
G Link di file locali in PHP PHP 0
S passare un valore da un form a un file .php con metodo post PHP 4
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
C Wp-admin a file php WordPress 5
csi Inviare file jpg in locale alla stampante con php PHP 0
U Link a doppio file PHP PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
G leggere file txt e stampare con php il contenuto a video PHP 7
L Ricezione dei dati su file php da modulo html PHP 6
A invio massivo dati a file php Javascript 4
P Funzione jQuery Ajax invio file a php jQuery 1
B ciclare file xml con PHP PHP 1
S Libreria PHP per creare file dwg o dxf PHP 0
R Download file multipli da directory php PHP 0
N file manager da php 5 a 7 PHP 15
felino PHP e script generazione file excel PHP 2
W Rinominare un file in PHP PHP 7
M Richiamare una singola funziona da file php PHP 2
S mantenere le modifiche in un file php PHP 2
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
G [PHP] Trovare tutti i file a un arl PHP 2
MarcoGrazia [PHP] Download di file con errore all'interno. PHP 1
S [PHP] Recupero nome immagine da Form con input file PHP 3
L includere file inc.*.php in automatico PHP 1
D [Javascript] inserire uno script in un file php Javascript 6
Gabriele15497514 php testo errato durante la lettura del file txt quando lo script viene eseguito contemporaneamente PHP 3
C [PHP] Problema con download file PHP 0
F [PHP] Importare file CSV in HTML PHP 12
M [PHP] Errore di percorso, file not found PHP 3
S [PHP] Upload stesso file PHP 14
J Passaggio variabile tra 2 file php PHP 15
D [PHP] editor per file doc o rtf direttamente online PHP 0
Cosina [PHP] Cancellare una riga da un file di testo in base al nome PHP 2
Cosina [PHP] Cancellare una riga da un file txt in base alla data PHP 1
M [PHP] Importare file csv su server PHP 0
P [PHP] Inserire stringhe in input(text),memorizzarle e stamparle in file successivo PHP 0
M [PHP] Eliminazione utente e tutti i suoi file caricati in una cartella PHP 8
M Non corretta lettura del file php.ini della sezione CLI PHP 3
R php Somma valori in file csv PHP 2
S [PHP] come esportare due tabelle in file excel su due fogli distinti PHP 8
F [PHP] Importare file CSV in HTML PHP 3
G [PHP] upload file in server: percorso cartella PHP 2
C [PHP] Pagina html che legge file txt PHP 41
A Da php a file txt PHP 5
Tommy03 Generare file PHP dopo registrazione PHP 2
M Upload 4 file php PHP 11
B [PHP] Elimina quindi aggiungi una riga in un file di testo PHP 0
C Leggere dati File.XMLcon PHP XML 11
F [PHP] [HTML] File legato ad action in un form PHP 1

Discussioni simili