Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [ASP.NET] Problemi con i livelli di sicurezza
Forum - C# / VB.NET - [ASP.NET] Problemi con i livelli di sicurezza

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Segnala al moderatore
Postato alle 18:26
Lunedì, 04/10/2010
Salve, in primo luogo mi scuso se ho aperto nella sezione sbagliata (.NET World mi sembrava adatto all'ASP.NET :D). Ho un problema con i livelli di sicurezza (trust level). Ho creato una chat (nulla di eccezionale, progetto veloce) che in locale funziona perfettamente, ma, se hostata (ho register) mi da dei problemi. Questo è l'errore che mi ritorna:

Testo quotato

Description: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.

Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.


Questo è il codice:
Codice sorgente - presumibilmente VB.NET

  1. <%@ Import Namespace="System.IO" %>
  2. <script runat="server">
  3.     Private Sub inser_Click(ByVal sender As Object, ByVal e As System.EventArgs)
  4.         Dim objStreamWriter As StreamWriter
  5.         objStreamWriter = File.AppendText("Text.txt")
  6.         objStreamWriter.WriteLine(Date.Now.Hour & ":" & Date.Now.Minute & ":" & Date.Now.Second & "User:" & Casella.Text)
  7.         objStreamWriter.Close()
  8.         Casella.Text = ""
  9.     End Sub
  10. </script>



"Casella" è una textbox
"Text" è una textbox

Sostanzialmente una semplicissima scrittura su file di testo, che mi viene bloccata. Qualcuno saprebbe indicarmi qualcosa per risolvere il problema? (temo di dover modificare il codice dato che le impostazioni non credo di averle a mia disposizione).

P.S: nella lettura del file non c'è (ovviamente) nessun problema.

Ultima modifica effettuata da Iohoilpotere il 04/10/2010 alle 18:27
PM
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Up
0
Down
V
Segnala al moderatore
Postato alle 18:46
Lunedì, 04/10/2010
Questi permessi sono impostati a livello di code access security (cas).
In normali applicazioni .net gli assembly vengono configurati tramite il comando caspol (http://msdn.microsoft.com/en-us/library/a0ke3k86.aspx) o tramite il .NET Configuration Tool (mscorcfg.msc, nella folder del .NET SDK).

Cercando qualcosa su come applicare a asp.net CAS ho trovato questo: http://msdn.microsoft.com/en-us/library/ff649312.aspx

Dovrebbe fuzionare così anche in asp.net 3.5; se usi asp.net 4.0 non si saprei aiutare visto che non l'ho ancora usato e, da quel che ho visto, CAS non c'è più in questa versione.

PM
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 19:15
Lunedì, 04/10/2010
Uhm, ho letto e seguito le istruzioni, ma mi ritorna errore:
Testo quotato


Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: This configuration section cannot be used at this path.  This happens when the site administrator has locked access to this section using <location allowOverride="false"> from an inherited configuration file.



quando tento di modificare il web.config...

PM
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Up
0
Down
V
Segnala al moderatore
Postato alle 19:29
Lunedì, 04/10/2010
Evidentemente il web hoster ha lockato la modifica di alcune parti del web.config.

A questo punto se non puoi effettivamente modificare i permissionSet dovresti chiedere a chi hosta il tuo sito qual è un path, se c'è, dove hai i diritti di scrittura.

Di solito una cartella utente dove puoi scriverci dentro dovrebbe esserci.
Una volta trovata la cartella, assicurati di accedere alla cartella dove scrivi tramite path fisico con MapPath: http://msdn.microsoft.com/it-it/library/system.web.httpser ...

PM
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 20:14
Lunedì, 04/10/2010
Sono curioso di sapere adesso register cosa mi dice <<

PM
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 21:24
Lunedì, 04/10/2010
la cosa inizia a farsi comica, ho provato a rimuovere web.config e non da errori, se invece ci aggiungo la stringa

<trust level="Full" originUrl="" />

mi ritorna l'errore... ho come l'impressione che qualcosa mi sfugga <<

PM
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Up
0
Down
V
Segnala al moderatore
Postato alle 21:32
Lunedì, 04/10/2010
Ti riferisci al secondo errore?
Il secondo errore sorge quando imposti nel web.config una property già definita ad un livello superiore dove l'override non è permesso, cioè impedisce ad altri web.config di sovrascrivere le opzioni.

Postaci qui eventualmente il tuo web.config

PM
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 21:50
Lunedì, 04/10/2010
Codice sorgente - presumibilmente Plain Text

  1. <?xml version="1.0"?>
  2. <configuration>
  3.         <configSections>
  4.                 <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  5.                         <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  6.                                 <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
  7.                                 <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
  8.                                         <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
  9.                                         <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
  10.                                         <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
  11.                                         <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
  12.                                 </sectionGroup>
  13.                         </sectionGroup>
  14.                 </sectionGroup>
  15.         </configSections>
  16.         <appSettings/>
  17.         <connectionStrings/>
  18.         <system.web>
  19.                 <!--
  20.             Impostare compilation debug="true" per inserire i
  21.             simboli di debug nella pagina compilata. Poiché tale operazione ha effetto
  22.             sulle prestazioni, impostare questo valore su true
  23.             solo durante lo sviluppo.
  24.  
  25.             Opzioni di Visual Basic:
  26.             Impostare strict="true" per impedire qualsiasi conversione di tipi di dati
  27.             in caso di possibile perdita di dati.
  28.             Impostare explicit="true" per imporre la dichiarazione di tutte le variabili.
  29.         -->
  30.                 <compilation debug="false" strict="false" explicit="true">
  31.                         <assemblies>
  32.                                 <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  33.                                 <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  34.                                 <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  35.                                 <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  36.                         </assemblies>
  37.                 </compilation>
  38.                 <pages>
  39.                         <namespaces>
  40.                                 <clear/>
  41.                                 <add namespace="System"/>
  42.                                 <add namespace="System.Collections"/>
  43.                                 <add namespace="System.Collections.Generic"/>
  44.                                 <add namespace="System.Collections.Specialized"/>
  45.                                 <add namespace="System.Configuration"/>
  46.                                 <add namespace="System.Text"/>
  47.                                 <add namespace="System.Text.RegularExpressions"/>
  48.                                 <add namespace="System.Linq"/>
  49.                                 <add namespace="System.Xml.Linq"/>
  50.                                 <add namespace="System.Web"/>
  51.                                 <add namespace="System.Web.Caching"/>
  52.                                 <add namespace="System.Web.SessionState"/>
  53.                                 <add namespace="System.Web.Security"/>
  54.                                 <add namespace="System.Web.Profile"/>
  55.                                 <add namespace="System.Web.UI"/>
  56.                                 <add namespace="System.Web.UI.WebControls"/>
  57.                                 <add namespace="System.Web.UI.WebControls.WebParts"/>
  58.                                 <add namespace="System.Web.UI.HtmlControls"/>
  59.                         </namespaces>
  60.                         <controls>
  61.                                 <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  62.                                 <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  63.                         </controls>
  64.                 </pages>
  65.                 <!--
  66.             La sezione <authentication> consente di configurare
  67.             la modalità di autenticazione della sicurezza utilizzata da
  68.             ASP.NET per identificare un utente in ingresso.
  69.         -->
  70.                 <authentication mode="Windows"/>
  71.     <customErrors mode="Off"/>
  72.  
  73.     <!--
  74.             La sezione <customErrors> consente di configurare
  75.             l'operazione da eseguire in caso di errore non gestito
  76.             durante l'esecuzione di una richiesta. In particolare,
  77.             consente agli sviluppatori di configurare le pagine di errore HTML
  78.             in modo che vengano visualizzate al posto dell'analisi dello stack dell'errore.
  79.  
  80.         <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
  81.             <error statusCode="403" redirect="NoAccess.htm" />
  82.             <error statusCode="404" redirect="FileNotFound.htm" />
  83.         </customErrors>
  84.         -->
  85.                 <httpHandlers>
  86.                         <remove verb="*" path="*.asmx"/>
  87.                         <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  88.                         <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  89.                         <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
  90.                 </httpHandlers>
  91.                 <httpModules>
  92.                         <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  93.                 </httpModules>
  94.         </system.web>
  95.         <system.codedom>
  96.                 <compilers>
  97.                         <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  98.                                 <providerOption name="CompilerVersion" value="v3.5"/>
  99.                                 <providerOption name="OptionInfer" value="true"/>
  100.                                 <providerOption name="WarnAsError" value="false"/>
  101.                         </compiler>
  102.                 </compilers>
  103.         </system.codedom>
  104.         <!--
  105.         La sezione system.webServer è richiesta per eseguire ASP.NET AJAX in Internet
  106.        Information Services 7.0. Non è necessaria per la versione precedente di IIS.
  107.     -->
  108.         <system.webServer>
  109.                 <validation validateIntegratedModeConfiguration="false"/>
  110.                 <modules>
  111.                         <remove name="ScriptModule"/>
  112.                         <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  113.                 </modules>
  114.                 <handlers>
  115.                         <remove name="WebServiceHandlerFactory-Integrated"/>
  116.                         <remove name="ScriptHandlerFactory"/>
  117.                         <remove name="ScriptHandlerFactoryAppServices"/>
  118.                         <remove name="ScriptResource"/>
  119.                         <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  120.                         <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  121.                         <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  122.                 </handlers>
  123.         </system.webServer>
  124.         <runtime>
  125.                 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  126.                         <dependentAssembly>
  127.                                 <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
  128.                                 <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
  129.                         </dependentAssembly>
  130.                         <dependentAssembly>
  131.                                 <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
  132.                                 <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
  133.                         </dependentAssembly>
  134.                 </assemblyBinding>
  135.         </runtime>
  136. </configuration>



Tutto autocompilato, io non ho mai visto questa roba prima di ieri...

PM
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Up
0
Down
V
Segnala al moderatore
Postato alle 22:04
Lunedì, 04/10/2010
L'unica cosa che al momento mi resta in mente è che nel web.config a machine-level (dove tu non hai accesso) l'hoster abbia impostato un trust-level restrittivo, bloccandolo con

<location allowOverride="false">

Impedendoti quindi di sovrascrivere la section relativa al trusting (ci sono ovviamente molti motivi per farlo quando hai da gestire tante web application di tanti publisher diversi).

Non saprei altre alternative se non informarsi con il web hoster su come gestisce la parte di security.

Probabilmente ha impostato un trust level custom lockato, dove in una sandbox ti concede qualche diritto in più. Ma solo lui può sapere se, cosa, dove e come.

PM
Pagine: [ 1 2 ] Precedente | Prossimo