Precauzioni prima della consegna di un sito

frenkytribe

Utente Attivo
17 Gen 2013
87
0
0
Buongiorno,
volevo sapere come prendere precauzioni quando si consegna un lavoro, ad esempio:
creo un sito web e chiedo un acconto per iniziare i lavori, a lavori ultimati consegno il sito e il cliente mi dice che mi darà la parte restante dei soldi la settimana successiva.
Il cliente decide che non vuole pagare l' altra metà e cambia la password di accesso FTP... Io resto fregato...
Mi raccontarono tempo fa che è possibile creare uno script PHP nascondendolo con diverse estenzioni (o non so come) dove è possibile, per lo sviluppatore, visualizzare la password in modo che se il cliente la cambia io posso avere sempre una garanzia su cui contare... Come è possibile fare per preservarsi da questi inconvenienti?
 
La miglior cosa è mettere un file nascosto dal quale tu puoi gestire eventualmente il sito, in pratica una shell personalizzata, oppure dato che il cliente dubito sia esperto, puoi mettere una specie di licenza a distanza in php

Ad esempio:
File remoto -> immetti sito del cliente
File locale nel sito -> controlli che in remoto esista il sito del cliente
Se non esiste -> blocchi il sito o lo elimini magari, in modo che il cliente non possa fare il furbo
Se esiste -> Tutto ok


Questo procedimento è facile da attuare e puoi nasconderlo nel sito utilizzando qualche eval

es. (pagina_remota.php)
PHP:
$siti_okey = array('sito1.com','provalol.it','pincopallo.net');
echo isset($_GET['sito']) ? in_array($_GET['sito'],$siti_okey) : 0;

es. (pagina_locale.php)
PHP:
$file = file_get_contents('http://iltuosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
if($file!=1){ 
//blocchi il sito o elimini i files vedi te
}

Ovviamente ti ricordo che è bypassabile se si ha le conoscenze necessarie, offuscalo comunque o rendilo illeggibile anche se l'utente è totalmente inesperto, ad esempio eval + base64 + urlencode.
 
Ultima modifica:
Quindi base64 è un tipo di codifica come se fosse md5 o sha1?
No, perché è decodificabile, md5 o lo sha1 generano un hash univoca non decodificabile se non tramite la corrispondenza per combinazione(quindi conoscendo già la chiave di una stringa, come fanno i siti 'decrypter')
 
Ultima modifica:
ma io non capisco: (supponiamo che il sito del cliente sia "www.prova.com")
1. Anche se il cliente cambia la password www.prova.com non resta lo stesso così? O.o
2. nel file locale dove c'è questa stringa
PHP:
$file = file_get_contents('http://iltuosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
è giusto iltuosito.it o prova.com ?
 
ma io non capisco: (supponiamo che il sito del cliente sia "www.prova.com")
1. Anche se il cliente cambia la password www.prova.com non resta lo stesso così? O.o
2. nel file locale dove c'è questa stringa
PHP:
$file = file_get_contents('http://iltuosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
è giusto iltuosito.it o prova.com ?
Infatti è un meccanismo che devi gestire te, se ti accorgi che il cliente fa il furbo rimuovi il suo sito dall'array($siti_okey) dei siti validi(cioè dei clienti che ti hanno pagato) nel file del tuo sito, una volta tolto quando il cliente aprirà una pagina, se il controllo sarà negativo effettuerà quello che gli dici di fare, cioè dopo il controllo dell'if o elimini i files o il database, o blocchi il sito oppure quello che vuoi.
 
Ahhh, certoo!! E per quanto riguarda quella stringa? è giusto miosito o devo mettere quello remoto?
 
Si, l'ho capito che erano esempi :) però guarda, facciamo così: miosito.it ; sitocliente.it ;

nel mio sito ho messo pagina_remota.php
PHP:
<?php
	$siti_okey = array('sitocliente.it','provalol.it','pincopallo.net');
echo isset($_GET['sito']) ? in_array($_GET['sito'],$siti_okey) : 0;

sitocliente.it pagina_locale.it
PHP:
<?php
	$file = file_get_contents('http://miosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
	if($file!=1){ 
		echo "Ciao";
	}

Fatto così quando vado su sitocliente.it/pagina_locale.php vedo la scritta Ciao, se nel file pagina_remota.php cancello dall' array sitocliente.it vedo lo stesso la scritta Ciao....
 
Si, l'ho capito che erano esempi :) però guarda, facciamo così: miosito.it ; sitocliente.it ;

nel mio sito ho messo pagina_remota.php
PHP:
<?php
	$siti_okey = array('sitocliente.it','provalol.it','pincopallo.net');
echo isset($_GET['sito']) ? in_array($_GET['sito'],$siti_okey) : 0;

sitocliente.it pagina_locale.it
PHP:
<?php
	$file = file_get_contents('http://miosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
	if($file!=1){ 
		echo "Ciao";
	}

Fatto così quando vado su sitocliente.it/pagina_locale.php vedo la scritta Ciao, se nel file pagina_remota.php cancello dall' array sitocliente.it vedo lo stesso la scritta Ciao....
$_SERVER['HTTP_HOST'] deve corrispondere con il sito inserito, quindi se vuoi fare una prova generica toglilo e fai pagina_remota.php?sito=sito.com sennò aggiungi il vero sito all'array
 
Nefyt io ti ringrazio e so che forse ti sto facendo perdere pure tempo, sei gentile, ma io non lo capisco :incazz2:

io sto provando a testarlo in 2 domini differenti ma non capisco la logica... Se hai tempo puoi seguirmi passo passo?
 
ciao
forse il sistema migliore è il seguente:
1) hostare il sito su un proprio spazio (o cartella del tuo spazio) dove il cliente può vedere quello che hai fatto, ma non può toccare, tra l'altro essendo tuo puoi farci quello che vuoi
2) se tutto va bene farsi firmare una carta di approvazione
3) farsi pagare il saldo (o al massimo tutto meno qualche quisquiglia es. il 5%)
4) a saldo avvenuto spostare (ma non cancellare) il sito dal proprio host a quello del cliente (se paga con assegno prima verificare se andato a buon fine)

dimenticavo: prima di iniziare il lavoro "congruo anticipo".

ormai la cosa non mi interessa più, ma l'esperienza mi ha insegnato che è sempre meglio avere le mutande di ghisa
 
Nefyt io ti ringrazio e so che forse ti sto facendo perdere pure tempo, sei gentile, ma io non lo capisco :incazz2:

io sto provando a testarlo in 2 domini differenti ma non capisco la logica... Se hai tempo puoi seguirmi passo passo?
Vedo di rispiegartelo un po

iltuositoprincipale.it (SITO PRINCIPALE, DA DOVE GESTISCI I CLIENTI), qui inserirai la pagina remota con i siti dei clienti che ti hanno pagato correttamente o con cui sei in trattativa
PHP:
//siti dei clienti che ti hanno pagato o che ti vanno bene
$siti_okey = array('sitocliente.it','provalol.it','pincopallo.net'); 
//controllo, se il sito che arriva dalla richiesta si trova nei siti che vanno bene stampa 1 sennò 0
echo isset($_GET['sito']) ? in_array($_GET['sito'],$siti_okey) : 0;


ilsitodelcliente.it (SITO ESEMPIO DI UN CLIENTE COL QUALE SEI IN TRATTATIVA O STA PAGANDO), qui inserirai dove vuoi te criptandolo e nascondendolo questo pezzettino di codice (che dovrai implementare come vuoi) che controllerà se il sito è nei siti 'okey' quindi va bene
PHP:
//mandi una richiesta al tuo sito per vedere se $_SERVER['HTTP_HOST'] che corrisponde al sito del cliente è nell'array di quelli che vanno bene
$file = file_get_contents('http://iltuositoprincipale.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']); 
//se non lo è....
if($file!=1){  
     die('Distruggi il sito, fagli esplodere il database, elimina i files o fai quello che vuoi lol'); 
}

A fine trattativa puoi lasciarlo oppure toglierlo come vuoi (il codice dalle pagine)

edit:
Oppure come ha detto borgo, sviluppi sul tuo spazio e quando hai finito fai prima pagare il cliente e poi gli consegni il lavoro
 
Ultima modifica:
Sì, e fino a qua ci siamo. Ora, supponendo che il cliente 'sitocliente.it' non abbia pagato e io voglio distruggere qualcosa che devo fare?

Vado nel file remoto e tolgo dall' array il sito 'sitocliente.it' e lancio 'miosito.it?pagina_remota.php?sito=sitocliente.it ' ?? O lanciare ' sitocliente.it/pagina_locale.php' ?
 
Sì, e fino a qua ci siamo. Ora, supponendo che il cliente 'sitocliente.it' non abbia pagato e io voglio distruggere qualcosa che devo fare?

Vado nel file remoto e tolgo dall' array il sito 'sitocliente.it' e lancio 'miosito.it?pagina_remota.php?sito=sitocliente.it ' ?? O lanciare ' sitocliente.it/pagina_locale.php' ?
Togli il sito dall'array e semplicemente visiti il suo sito dove hai incluso il codice, oppure aspetti che lo apra lui facendogli una bella sorpresina.

Il codice che viene eseguito è quello che metterai dentro all'if



quindi lanci: sitocliente.it/pagina_dove_hai_messo_il_codice.php, ti consiglio di metterlo sparso o almeno nelle pagine principali finché non hai finito la trattativa (come index,etc...)
 
Ultima modifica:
Allora così non funziona...

CASO 1
MIOSITO: pagina_remota.php
PHP:
<?php
	$siti_okey = array('sitocliente.it','provalol.it','pincopallo.net');
echo isset($_GET['sito']) ? in_array($_GET['sito'],$siti_okey) : 0;

SITOCLIENTE: pagina.php
PHP:
<?php
	$file = file_get_contents('http://miosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
	if($file!=1){ 
		echo "Distruggi";
	}else echo "Non distruggere";

lancio http.//sitocliente.it/pagina.php visualizzo "Distruggi".

CASO 2
MIOSITO: pagina_remota.php
PHP:
<?php
	$siti_okey = array('provalol.it','pincopallo.net');
echo isset($_GET['sito']) ? in_array($_GET['sito'],$siti_okey) : 0;

SITOCLIENTE: pagina.php
PHP:
<?php
	$file = file_get_contents('http://miosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
	if($file!=1){ 
		echo "Distruggi";
	}else echo "Non distruggere";

lancio http.//sitocliente.it/pagina.php visualizzo "Distruggi". (ANCHE SE L' HO CANCELLATO DALL' ARRAY)
 
Allora così non funziona...

CASO 1
MIOSITO: pagina_remota.php
PHP:
<?php
	$siti_okey = array('sitocliente.it','provalol.it','pincopallo.net');
echo isset($_GET['sito']) ? in_array($_GET['sito'],$siti_okey) : 0;

SITOCLIENTE: pagina.php
PHP:
<?php
	$file = file_get_contents('http://miosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
	if($file!=1){ 
		echo "Distruggi";
	}else echo "Non distruggere";

lancio http.//sitocliente.it/pagina.php visualizzo "Distruggi".

CASO 2
MIOSITO: pagina_remota.php
PHP:
<?php
	$siti_okey = array('provalol.it','pincopallo.net');
echo isset($_GET['sito']) ? in_array($_GET['sito'],$siti_okey) : 0;

SITOCLIENTE: pagina.php
PHP:
<?php
	$file = file_get_contents('http://miosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
	if($file!=1){ 
		echo "Distruggi";
	}else echo "Non distruggere";

lancio http.//sitocliente.it/pagina.php visualizzo "Distruggi". (ANCHE SE L' HO CANCELLATO DALL' ARRAY)
La seconda va bene, per la prima verifica le seguenti cose:

-$_SERVER['HTTP_HOST'] nel sito del cliente è uguale al sito aggiunto?
-Hai provato lanciando iltuosito.it/pagina_remota.php?sito=sitocliente.it manualmente? Che risultato avevi?
-Assicurati che file_get_contents() sia attivo sul sito del cliente e controlla il valore di $file, eventualmente posso postarti un esempio con la libreria curl
-Guarda anche che non ci sia altro oltre a quello nella tua pagina remota, eventuali spazi o caratteri imprevisti rimuovili
 
Ultima modifica:
La seconda va bene, per la prima verifica le seguenti cose:

-$_SERVER['HTTP_HOST'] nel sito del cliente è uguale al sito aggiunto?
-Hai provato lanciando iltuosito.it/pagina_remota.php?sito=sitocliente.it manualmente? Che risultato avevi?
-Assicurati che file_get_contents() sia attivo sul sito del cliente e controlla il valore di $file, eventualmente posso postarti un esempio con la libreria curl
-Guarda anche che non ci sia altro oltre a quello nella tua pagina remota, eventuali spazi o caratteri imprevisti rimuovili

Allora, se aggiunto nel sito del cliente
PHP:
<?php
    $file = file_get_contents('http://miosito.it/pagina_remota.php?sito='.$_SERVER['HTTP_HOST']);
    if($file!=1){ 
        echo "Distruggi";
        echo "<br>";
        echo $_SERVER['HTTP_HOST'];
    }else echo "Non distruggere";
- Vedo "Dstruggi sitocliente.it", dove sitocliente.it è uguale a quello che ho inserito nell' array.
- Lanciando manualmente dal mio sito se c'è sitocliente.it nell' array vedo 1, se non c'è non vedo niente.
- Per quanto riguarda file_get_contents() non so dove mettere le mani.
- Nella pagina c'è solo quello che ho incollato quà...
 

Discussioni simili