51 messaggi dal 15 maggio 2012
Ciao a tutti,
forse sono stato un pò confuso nel titolo e cercherò di spiegare meglio la situazione...
Sto sviluppando un applicativo in MVC con visual studio 2010. La logica dell'applicativo però è sviluppata quasi interamente in Javascript. Ora il problema è che i miei file javascript eseguono chiamate ajax alla mia base dati in sql,o meglio, dal file js richiamo delle action,presenti nei controller, che restituiscono dei dati.

Ora dopo essermi reso conto che effettivamente il mio file javascript può essere utilizzato anche da un sito esterno facendo semplicemente riferimento all'indirizzo del file, ho iniziato a chiedermi se fosse possibile in questo caso da chiunque utilizzare le funzioni di quel file javascript per farsi ritornare i dati del mio database al di fuori del dominio sul quale caricherò l'applicativo...c'è possibilità che accada?

e in più mi chiedevo,è possibile fare in modo che solo gli utenti con dei permessi particolari possano accedere alle informazioni contenute nei miei file javascript (concedendone per esempio l'accesso solo agli utenti che hanno effettuato il login)?
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao

VincenzoG ha scritto:

..c'è possibilità che accada?
Sì.
Nonostante il tuo JS non possa essere usato direttamente da altre applicazioni ajax a causa della same-origin policy, nulla vieterebbe a chiunque di proxare le richieste o semplicemente di accederci via browser per curiosare in maniera anonima nella tua banca dati.

VincenzoG ha scritto:

è possibile fare in modo che solo gli utenti con dei permessi particolari

Certo, puoi proteggere le action che restituiscono i dati (o l'intero controller) con l'attributo Authorize, eventualmente fornendo come parametro i nomi dei ruoli autorizzati. E' spiegato in questo articolo di Marco De Sanctis.
http://www.aspitalia.com/script/996/Autorizzazione-Livello-Controller-ASP.NET-MVC.aspx

ciao
Modificato da BrightSoul il 21 gennaio 2013 20.33 -

Enjoy learning and just keep making
51 messaggi dal 15 maggio 2012
BrightSoul ha scritto:

Nonostante il tuo JS non possa essere usato direttamente da altre applicazioni ajax a causa della same-origin policy, nulla vieterebbe a chiunque di proxare le richieste o semplicemente di accederci via browser per curiosare in maniera anonima nella tua banca dati.


quindi è sconsigliato sviluppare i meccanismi in javascript?


Puoi proteggere le action che restituiscono i dati (o l'intero controller) con l'attributo Authorize, eventualmente fornendo come parametro i nomi dei ruoli autorizzati. E' spiegato in questo articolo di Marco De Sanctis.
http://www.aspitalia.com/script/996/Autorizzazione-Livello-Controller-ASP.NET-MVC.aspx


Bene,questo mi sarà utile...però quello che cercavo di capire io era se si potesse bloccare l'accesso anche ai file javascript in modo da non poterli fare leggere dall'esterno a meno che non si sia fatto il login (a questo applicativo accederà solo il cliente che non conosce i metodi per leggere le informazioni scritte nei javascript quindi il consentire l'accesso solo a chi è loggato,se fosse possibile,mi aiuterebbe a proteggere ulteriormente l'applicativo...

per fare un esempio, se io digito(1):
localhost:xxx/Scripts/file.js

mi viene consentito l'accesso...mentre se scrivo(2):
localhost:xxx/Controller/file.cs

l'accesso viene negato.

Io vorrei ottenere una restrizione nell'accesso al file (1) cosi come avviene per il file (2) ,solo che ovviamente,dato che all'utente loggato i file js servono per poter visualizzare correttamente le pagine la restrizione deve valere solo per chi non ha determinati diritti...
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

VincenzoG ha scritto:

quindi è sconsigliato sviluppare i meccanismi in javascript?

No, assolutamente, del resto anche se avessi un'applicazione "tradizionale" non protetta, chiunque potrebbe comunque accedere all'output prodotto dalle tue pagine aspx ed estrapolare i dati da lì.

Qualsiasi approccio tu scelga, è indispensabile che le richieste che restituiscono dati siano protette da login. Per far questo in un'applicazione MVC, usa l'attributo Authorize come ti dicevo nel post di ieri.

Ora veniamo ai file js: immagino che contengano "solo" la logica di funzionamento dell'applicazione, e non i dati. Se vuoi proteggere anche questi, mettili in una cartella in cui si trovano solo file statici (es. ~/Content) ed usa il web.config alla maniera di asp.net WebForms per proteggere l'intera cartella.
<configuration>
  <location path="Content">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
</configuration>
L'istruzione deny bloccherà l'accesso agli utenti anonimi (ammesso che tu stia usando la FormsAuthentication).

Adesso devi fare in modo che la tua pagina di login prenda da un'altra cartella gli eventuali fogli di stile CSS e i file javascript che le sono strettamente necessari, altrimenti l'utente anonimo che va a loggarsi vedrebbe una pagina incompleta.

VincenzoG ha scritto:

mi viene consentito l'accesso...mentre se scrivo
localhost:xxx/Controller/file.cs
l'accesso viene negato.

Sì, questo è IIS che impedisce l'accesso al file altrimenti il codice sorgente della tua applicazione verrebbe rivelato.
IIS blocca l'accesso anche a molte altre estensioni di file, non solo .cs, ma tu non puoi fare la stessa cosa con l'estensione .js perché neanche gli utenti loggati riuscirebbero più ad accedere al file.

ciao
Modificato da BrightSoul il 23 gennaio 2013 22.00 -

Enjoy learning and just keep making
51 messaggi dal 15 maggio 2012
Bene,perfetto! Grazie mille per i chiarimenti :)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.