none
HTTP Upload RRS feed

  • Domanda

  • Ciao,

    Visto che FTP è troppo insicure, cioè i dati li invia in chiaro, ho deciso di uppare i file in http solo che non ci riesco.

    Guardate il codice(opportunamente oscurato):

                   

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://sito.org/Cartella/prova.txt";
                    request.Method = WebRequestMethods.Http.Post;
                    request.Credentials = new NetworkCredential("username", "password");
                    byte[] gg = new byte[jj.Length];
                    char[] hh = new char[jj.Length];
                    hh = jj.ToCharArray();
                    for (int i = 0; i < jj.Length; i++)
                    {
                        gg[i] = Convert.ToByte(hh[i]);
                    }
                    Stream reqStream = request.GetRequestStream();
                    reqStream.Write(gg, 0, gg.Length);
                    reqStream.Close();
                    request.Abort();


    venerdì 9 dicembre 2011 15:31

Risposte

  • ciao

    devo ovviamente consigliarti di usare WCF visto che http non è comunque molto più sicuro di ftp... mentre con WCF puoi usare un sacco di impostazioni di sicurezza in più, crittografia, compressione, etc...

     

                var request = HttpWebRequest.Create("http://sito.org/Cartella/prova.txt");
                request.Method = WebRequestMethods.Http.Post;
                request.Credentials = new NetworkCredential("username", "password");
                
                var bytes = System.IO.File.ReadAllBytes("c:\file.txt");
                var stream = request.GetRequestStream();
                stream.Write(bytes, 0, bytes.Length);
    
                //devi aspettare ovviamente i tempi della chiamata sincrona
                var response1 = request.GetResponse();
    
                //leggo la response
    
                //oppure chiamata asicrona
                request.BeginGetResponse(a =>
                    {
                        var response2 = request.EndGetResponse(a);
                        //leggo la response
    
                    }, null);
    
    


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    • Proposto come risposta Irina Turcu venerdì 16 dicembre 2011 12:39
    • Contrassegnato come risposta Irina Turcu martedì 20 dicembre 2011 14:01
    venerdì 9 dicembre 2011 17:01
    Postatore
  • Ciao Orlando,

    You wrote on 09/12/2011 :

    Se provo ad aggiungere con il Post mi da 404 se provo a modificare un file esistente con Put mi da 405. Il mio dominio è altervista.

    non è così facile, http supporta quei verbs ma dall'altra parte (sul server) ci vuole qualcosa (un handler) che sappia cosa fare con quelle chiamate.

    Occhio che anche http viaggia in chiaro :-) se vuoi (e puoi nel senso che il provider che usi li supporta) puoi usare sftp e https.

    Come dice Antonio molto meglio un semplice servizio e risolvi tutto al volo.

    .m


    --
    blog @ //milestone.topics.it
    • Proposto come risposta Irina Turcu venerdì 16 dicembre 2011 12:39
    • Contrassegnato come risposta Irina Turcu martedì 20 dicembre 2011 14:01
    sabato 10 dicembre 2011 08:03
  • personalmente no

    ricapitolando:

    vuoi usare http perchè non ti fidi di ftp anche se sono pari a vulnerabilità essendo entrambi in chiaro

    vuoi copiare un file su di un hosting su altervista che però non supporta asp.net.......

     

    allora, l'unica soluzione è cercare un hosting free che supporti asp.net così puoi farti la tua paginetta con username+password e pulsantino FileUpload per uppare il file comodamente.... probabilmente è molto più facile che trovare 1 hosting free con ftps o https....


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    • Proposto come risposta Irina Turcu venerdì 16 dicembre 2011 12:38
    • Contrassegnato come risposta Irina Turcu martedì 20 dicembre 2011 14:01
    domenica 11 dicembre 2011 16:18
    Postatore

Tutte le risposte

  • ciao

    devo ovviamente consigliarti di usare WCF visto che http non è comunque molto più sicuro di ftp... mentre con WCF puoi usare un sacco di impostazioni di sicurezza in più, crittografia, compressione, etc...

     

                var request = HttpWebRequest.Create("http://sito.org/Cartella/prova.txt");
                request.Method = WebRequestMethods.Http.Post;
                request.Credentials = new NetworkCredential("username", "password");
                
                var bytes = System.IO.File.ReadAllBytes("c:\file.txt");
                var stream = request.GetRequestStream();
                stream.Write(bytes, 0, bytes.Length);
    
                //devi aspettare ovviamente i tempi della chiamata sincrona
                var response1 = request.GetResponse();
    
                //leggo la response
    
                //oppure chiamata asicrona
                request.BeginGetResponse(a =>
                    {
                        var response2 = request.EndGetResponse(a);
                        //leggo la response
    
                    }, null);
    
    


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    • Proposto come risposta Irina Turcu venerdì 16 dicembre 2011 12:39
    • Contrassegnato come risposta Irina Turcu martedì 20 dicembre 2011 14:01
    venerdì 9 dicembre 2011 17:01
    Postatore
  • Se provo ad aggiungere con il Post mi da 404 se provo a modificare un file esistente con Put mi da 405. Il mio dominio è altervista.
    venerdì 9 dicembre 2011 18:03
  • Ciao Orlando,

    You wrote on 09/12/2011 :

    Se provo ad aggiungere con il Post mi da 404 se provo a modificare un file esistente con Put mi da 405. Il mio dominio è altervista.

    non è così facile, http supporta quei verbs ma dall'altra parte (sul server) ci vuole qualcosa (un handler) che sappia cosa fare con quelle chiamate.

    Occhio che anche http viaggia in chiaro :-) se vuoi (e puoi nel senso che il provider che usi li supporta) puoi usare sftp e https.

    Come dice Antonio molto meglio un semplice servizio e risolvi tutto al volo.

    .m


    --
    blog @ //milestone.topics.it
    • Proposto come risposta Irina Turcu venerdì 16 dicembre 2011 12:39
    • Contrassegnato come risposta Irina Turcu martedì 20 dicembre 2011 14:01
    sabato 10 dicembre 2011 08:03
  • Cioè? Poi posso utilizzarlo nel mio programma in modo nascosto?
    sabato 10 dicembre 2011 13:04
  • Ciao Orlando Liccardo,

    You wrote on 10/12/2011 :

    Cioè? Poi posso utilizzarlo nel mio programma in modo nascosto?

    non lo so, oltre al dettaglio che non ho capito cosa vuol dire, non ho la più pallida idea di cosa devi fare.

    .m


    --
    blog @ //milestone.topics.it
    sabato 10 dicembre 2011 13:21
  • Cioè? Poi posso utilizzarlo nel mio programma in modo nascosto?


    ciao

     

    cosa puoi usare in modo nascosto?!?!

     

    se parli di un servizio WCF, la risposta è si e no.... un servizio risponde sempre... l'unica cosa che puoi fare è impostare un sistema di autenticazione che potrai usare solo tu....

    esempio semplice: username+password che saprai solo tu

    esempio più avanzato: X509... ma su un hosting non potrai mai installare dei certificati....

     

    ti consiglio comunque di usare WCF con MessageSecurity settata a Username+Password, e scriverti una classettina per gestire l'autenticazione.... ma occhio che WCF non vede automaticamente il contesto di un'applicazione web asp.net, dovrai anche abilitarne la compatibilità....

     

    ma usare skydrive per conservare i files online al sicuro?!?! hai mai provato??!


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    sabato 10 dicembre 2011 13:27
    Postatore
  • anche su skydrive lo stesso non potrei usare http.
    sabato 10 dicembre 2011 13:29
  • skydrive usa https e sicurezza federata con Live... quindi non ti devi preoccupare di niente, e poi skydrive lo puoi attaccare anche come unità di rete su risorse del computer.... quindi lo puoi usare da windows, o da web, o da API scritte comodamente in .NET, tutto senza preoccuparti di niente con 25 GB di spazio

    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    sabato 10 dicembre 2011 13:31
    Postatore
  • Qualche guida o esempio?
    sabato 10 dicembre 2011 13:41
  • per accedere ed avere un account skydrive:

    https://skydrive.live.com/

    li puoi creare cartelle, condividerle con il mondo, o solo x te.....

     

     

    se fai un giro su google trovi varie guide x usare le risorde del computer:

    http://www.risorsegeek.net/microsoft/skydrive/gestire-skydrive-nelle-risorse-del-computer-grazie-a-skydrive-explorer/

     

    per le API:

    ci sn quelle open http://skydriveapiclient.codeplex.com/

    e le nuove live sdk: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=28195

     

    a presto

     


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    sabato 10 dicembre 2011 13:49
    Postatore
  • Con le open non mi funziona con .net 4.0 con quelle ufficilai non c'è l'upload(almeno non c'è nella documentazione)
    sabato 10 dicembre 2011 22:25
  • Per piacere mi aiutate a creare un header per ricevere i file dal mio programma con http sul dominio altervista? so che http gira in chiaro ma non si vedono ne psw ne id.
    domenica 11 dicembre 2011 09:57
  • ciao

    x skydrive: non ho ancora avuto il tempo di provarle ma mi sembra strano non esista un modo di fare upload, hai provato a vedere i samples??

    https://github.com/liveservices/LiveSDK

     

    x http, essendo in chiaro, l'autenticazione avviene in Basic, quindi con nomeutente e password in chiaro in un header http

    per aggiungere 1 header:

                var fname = "c:\file.txt";
                var b64 = Convert.ToBase64String(System.IO.File.ReadAllBytes(fname));
    
                var request = HttpWebRequest.Create("http://www.google.com");
                request.Credentials = new NetworkCredential("username", "password");
                request.Headers.Add("myheadername", b64);
    
                var response = request.GetResponse();
    
    

     

    se hai modo di usare asp.net sul tuo server, perchè non metti una pagina con dentro un FileUpload?? è più semplice


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    domenica 11 dicembre 2011 10:07
    Postatore
  • Su altervista si può mettere? Io non ho nessuna conoscenza di ASP.NET
    domenica 11 dicembre 2011 10:12
  • mi aspettavo che lo sapessi tu :)

    legendo 1 po sul web, sembra di no perchè usano server Linux....

     


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    domenica 11 dicembre 2011 10:15
    Postatore
  • Una volta aggiunto l'header come devo fare per uppare?
    domenica 11 dicembre 2011 10:21
  • ciao

    in verità ero certo tu stessi lavorando con asp.net o con qualche linguaggio lato server....

    da solo nessun server web ti rende possibile salvare da un header un base64 in un file.... dovresti scrivere del codice, ma con altervista non saprei nemmeno in che linguaggio o per che framework

     

    a questo punto visto che sei completamente in balia di altervista, ma perchè non usare FTP?

    tanto in chiaro x in chiaro... almeno è un protocollo fatto già per copiare files??? suppongo che altervista ti dia l'ftp...


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    domenica 11 dicembre 2011 10:24
    Postatore
  • Perchè è facile leggermi i dati e accedere al ftp del mio sito e cancellare qualunque cosa.
    domenica 11 dicembre 2011 10:27
  • suppongo che altervista come altro hoster ti dia nomeutente e password per accedere al tuo FTP, quindi non vedo come possa essere meno sicuro di http


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    domenica 11 dicembre 2011 10:28
    Postatore
  • In giro ci sono tante persone che si credono esperti in informatica ma in realta usano un programma fatto da altri(che ho fatto anche io come sercizio) che ti permette di rilevare i dati del FTP come nome utente e password in forma: nomeutente:password.Quindi come bene capisci poi è semplice entrare in un FTP con quei dati . I dati del http con questi tipi di programmi non si vedono tutti (non si vede ne nome utente ne psw).
    domenica 11 dicembre 2011 10:32
  • con qualunque sniffer, fiddler as esempio, è posibile vedere esattamente nomeutente e password essendo in chiaro che vanno al server web ad ogni chiamata....

    la sicurezza la hai solo con dei servizi che usano dei protocolli di sicurezza, per il web, hai speranze solo con SSL, ma comunque non è al livello di un servizio

    il mio consiglio è: alza il livello di sicurezza usando un servizio WCF da mettere su un server che supporti ASP.NET

    alternativamente, se vuoi avere tutto in chiaro e bucabile, usa FTP che è più facile

    ultimo consiglio: contorto non vuol dire sicuro, se il tuo sistema è in chiaro, 1 hacker impiega 1 attimo a bucarlo, per quanto tu possa immaginare di mettergli ostacoli.....


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    domenica 11 dicembre 2011 10:39
    Postatore
  • ma il ftp sp che supporta ssl e anche i certificati x509.
    domenica 11 dicembre 2011 10:46
  • ftp non so se supporta autenticazione con certificati, ma supporta ssl

    se l'ftp di altervista supporta ssl allora hai risolto tutti i tuoi problemi, hai un sistema sicuro, e comodo per copiare files


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    domenica 11 dicembre 2011 10:49
    Postatore
  • ho provato mi da errore 500
    domenica 11 dicembre 2011 10:55
  • ciao

    diciamo pure che errore 500 è un po troppo generico per trovarti una soluzione :)

     

    cosa hai fatto?

    come l'hai fatto?

    che errore ti da? (oltre 500 dice altro?)

     

    grazie


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    domenica 11 dicembre 2011 11:04
    Postatore
  • comuqnue no non lo supporta ssl altervista
    domenica 11 dicembre 2011 11:08
  • puoi cambiare server?!?!


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    domenica 11 dicembre 2011 11:15
    Postatore
  • Conosci server gratis che ti danno ftp con ssl?
    domenica 11 dicembre 2011 12:27
  • personalmente no

    ricapitolando:

    vuoi usare http perchè non ti fidi di ftp anche se sono pari a vulnerabilità essendo entrambi in chiaro

    vuoi copiare un file su di un hosting su altervista che però non supporta asp.net.......

     

    allora, l'unica soluzione è cercare un hosting free che supporti asp.net così puoi farti la tua paginetta con username+password e pulsantino FileUpload per uppare il file comodamente.... probabilmente è molto più facile che trovare 1 hosting free con ftps o https....


    Antonio Esposito
    MCT, MCPD, MCTS, MCP
    http://dotnetlombardia.org

    Italy
    • Proposto come risposta Irina Turcu venerdì 16 dicembre 2011 12:38
    • Contrassegnato come risposta Irina Turcu martedì 20 dicembre 2011 14:01
    domenica 11 dicembre 2011 16:18
    Postatore
  • Ciao Orlando,

    Ho segnato come valido anche le risposte che ti sono state suggerite all’inizio (che parlano del WCF), al pensiero che potrebbero essere utili per chi cerca una tale soluzione.

    Per ogni altri dubbi sullo sviluppo, sai dove trovarci :)


    Saluti,


    Irina Turcu

    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e approfondire la loro conoscenza dei prodotti e tecnologie Microsoft.

    LinkedIn

    martedì 20 dicembre 2011 14:05