32 messaggi dal 03 giugno 2001

sto spostando da qualche giorno un mio sito su piattaforma win 2003 con iis 6 ...
ad ogni pagina con include mi da quest' errore


Active Server Pages error 'ASP 0131'

Percorso principale non consentito

/pippo/index.asp, line 56

Impossibile utilizzare il simbolo ".." per indicare la directory principale nel file di inclusione.

oppure

Server.MapPath() error 'ASP 0175 : 80004005'

Caratteri non consentiti nel percorso

/linkare/connection.inc, line 5
--------------
il gestore del server mi ha risposto ...

che

IIS6 per default, per problemi di sicurezza, non abilita l'utilizzo di percorsi che iniziano con "..".

Dovrei quindi utilizzare i percorsi assoluti a partire dalla root web del sito.
-------------
Ma se io ho 1500 pagine nel sito posso andare a modificare tutti i percorsi? ..(per poi avere anche problemi in locale) possibile che migrare da IIS 5 a IIS 6 è così difficile? e non esita un'altra soluzione?


Grazie a tutti.

11.886 messaggi dal 09 febbraio 2002
Contributi
scrivi una piccola applicazione che con fso apra tutte le pagine, trovi i percorsi e li modifichi di conseguenza.
Prima ovviamente fai un backup, nel caso tu debba recuperare i file originali. ciao.

Enjoy learning and just keep making
32 messaggi dal 03 giugno 2001
con la seconda parte ci sono.. modificare e backup ... ma quando parli di FSO come devo iniziare ? qualche tutorial od esempio?

grazie mille
11.886 messaggi dal 09 febbraio 2002
Contributi
noo, è semplice concettualmente.

1) crei un array di stringhe. In ogni elemento metti un percorso delle cartelle in cui si trovano i tuoi file asp che devono essere modificati.
Lo script prenderà una cartella alla volta e farà i dovuti replace di tutti i file contenuti all'interno.

2) una volta aperto un file, cerchi tutte le occorrenze di <!--#include file="...", estrapoli il percorso del file incluso (devi lavorare molto con instr e mid), lo metti in rapporto alla root e generi un'altro percorso, quello virtuale. Sostituisci quindi l'include file con l'include virtual, usando il nuovo percorso appena generato.

2b) Questo qua sopra, una volta fatto, funziona con qualsiasi inclusione. Se tu invece già sai quali file sono inclusi in una pagina, basta fare un replace. E' un metodo molto più spicciativo. Esempio: tu sai che in tutte le pagine di questa cartella c'è la riga:
<!--#include file="../database/connection.inc"-->
allora fai un replace con la riga giusta:
<!--#include virtual="/database/connection.inc"-->

3) Fatti i replace, salvi il file.

ti conviene fare un file vbs anzichè una pagina asp, è un po' più "maneggevole" e il codice che scriveresti all'interno è pressochè identico.

Ti scrivo giusto poche righe di codice per iniziare:

sostituisci.vbs
Dim cartelle(1)
cartelle(0)="C:\inetpub\wwwroot\tuaapp\cartella1\"
cartelle(1)="C:\inetpub\wwwroot\tuaapp\cartella2\"
Dim fso, cartella, file, textfile, contenuto
set fso = Createobject("scripting.FilesystemObject")

for i = 0 to Ubound(cartelle)
set cartella = fso.GetFolder(cartelle(i))
for each file in cartella.Files
'qui faccio un ciclo su tutti i file della cartella
'e apro solo quelli .aspx
if Right(file.Name,4) = ".aspx" then
set textfile = fso.OpenTextFile(cartelle(i) & file.Name,1)
contenuto = textfile.ReadAll
textfile.Close
'qui fai i replace
contenuto = Replace(contenuto, "<!--#include file=""../database/connection.inc""-->", "<!--#include virtual=""/database/connection.inc""-->")
set textfile = fso.OpenTextFile(cartelle(i) & file.Name,1)
textfile.Write(contenuto)
textfile.Close
set textfile = nothing
end if
next
next


ciao

Enjoy learning and just keep making
subxus ha scritto:
possibile che migrare da IIS 5 a IIS 6 è così difficile? e non esita un'altra soluzione?


oltre a quanto detto dall'ottimo BrightSoul, aggiungo che questo non è un problema di IIS 6, ma una feature che c'è anche in IIS 5 (e che ho sempre usato) ma che non essendo attiva di default la maggioranza degli sviluppatori (e dei sysadmin) per nulla attenta alla sicurezza non ha mai usato.

evidentemente è arrivato il momento di farlo.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
32 messaggi dal 03 giugno 2001
Tutti parlano di sicurezza..

ma cosa può comportare il fatto di utilizzare ../ nei server windows ?dato che asp funziona lato server cosa può succedere?

ciao e grazie a tutti

Ringrazio tutti ... io ho risolto il problema in questo modo

http://vademecum.aruba.it/start/2003/info.htm


ciao
può succedere che se io metto ../../../winNT/ arrivo alla dir di windows, quindi alla riga di comando, quindi probabilmente a tutto quello che serve per fare quello che mi pare. basta?

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
11.886 messaggi dal 09 febbraio 2002
Contributi

può succedere che se io metto ../../../winNT/ arrivo alla dir di windows, quindi alla riga di comando, quindi probabilmente a tutto quello che serve per fare quello che mi pare. basta?


beh, protrei comunque scrivere:

cartella = fso.GetFolder("C:\WINNT")
for each file in cartella.Files
file.Delete()
next

ma non avendo i diritti di scripting su quella cartella posso fare niente, giusto? E' un po' un problema rinunciare ai percorsi relativi. Io sviluppo su WinXp, e non potendo impostare una root per ogni mio sito, all'atto della pubblicazione devo andare a correggere tutti i percorsi.
:(

Enjoy learning and just keep making

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.