diagrafh arxeiou paralilla me diagrafh eggrafis

Πληροφορίες σχετικές με την ASP, ASP.NET και με τις εφαρμογές που είναι γραμμένες με αυτήν.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
geoki
Δημοσιεύσεις: 309
Εγγραφή: 07 Ιαν 2002 01:00
Τοποθεσία: Giannitsa

diagrafh arxeiou paralilla me diagrafh eggrafis

Δημοσίευση από geoki » 10 Φεβ 2005 01:04

geia sas

exo ena script poy diagrafei mia eggrafh apo th db to opoio einai to exis:

Κώδικας: Επιλογή όλων

<%
picID = Request&#40; "pid" &#41;

Set Con = Server.CreateObject&#40; "ADODB.Connection" &#41;
Con.Open "dsnnet"

Set RS = Server.CreateObject&#40; "ADODB.Recordset" &#41;
RS.ActiveConnection = Con
RS.CursorType = 3
RS.Open "DELETE * FROM pics WHERE pics_id=" & picsID

%>
Sto pedio picURL yparxei to URL ths eikonas px "pics/photo1.jpg"

pos mporei na ginei oste mazi me thn eggrafi na svinei kai to arxeio?

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

diagrafh arxeiou paralilla me diagrafh eggrafis

Δημοσίευση από skeftomilos » 17 Φεβ 2005 17:28

Με τον τρόπο που προσθέτεις στο query τη Request μεταβλητή, ανοίγεις διάπλατα την πόρτα σε επιθέσεις τύπου SQL Injection. Ειδικά αν η database που χρησιμοποιείς είναι SQL Server, ο κάθε μελετημένος hacker μπορεί να στείλει τον server σου για βρούβες. Για να κλείσεις αυτή τη security-hole χρησιμοποίησε αντικείμενα ADODB.Command και ADODB.Parameter.

Για να διαγράψεις αρχεία με ASP χρειάζεσαι ένα αντικείμενο FileSystemObject της Microsoft Scripting Runtime Library. Ο κώδικας θα είναι κάπως έτσι:

Κώδικας: Επιλογή όλων

Set fso = Server.CreateObject&#40;"Scripting.FileSystemObject"&#41;
fso.DeleteFile&#40;Server.MapPath&#40;picURL&#41;&#41;
Ωστόσο είναι πιθανό να μη μπορεί να γίνει η διαγραφή εάν ο account υπό τον οποίο τρέχει η ASP δεν έχει δικαιώματα διαγραφής αρχείων στο συγκεκριμένο φάκελο. Αν δεν έχει θα πρέπει να τα δώσεις. Το όνομα του account αυτού έχει συνήθως τη μορφή IUSR_machineName. Επιπλέον υπάρχει πάλι το ενδεχόμενο κενού ασφαλείας. Από που διαβάζεις τη μεταβλητή picURL? Μήπως και αυτή από τη συλλογή Request? Υπάρχει περίπτωση να περιέχει κάτι σαν "../../../autoexec.bat"?

Έχω μιά άλλη ιδέα να σου προτείνω. Φτιάξε μία μικρή windows εφαρμογή με VB ή VBScript(WSH) που να διαβάζει τη λιστα με όλα τα picURLs από τη βάση και να διαγράφει όλες τις εικόνες μέσα στο φάκελο που το όνομά τους δεν περιέχεται στη λίστα. Την εφαρμογή αυτή θα μπορείς να την τρέχεις μία φορά τη μέρα, τη βδομάδα ή το μήνα. Μπορείς να αυτοματοποιήσεις αυτή την εργασία με τον Windows Scheduler. Θα πήγαινα ένα βήμα παραπέρα και θα έλεγα να μην διαγράφεις άμεσα τα αρχεία αλλά να τα μετακινείς σε έναν άλλο φάκελο "προς διαγραφή".
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
geoki
Δημοσιεύσεις: 309
Εγγραφή: 07 Ιαν 2002 01:00
Τοποθεσία: Giannitsa

diagrafh arxeiou paralilla me diagrafh eggrafis

Δημοσίευση από geoki » 19 Φεβ 2005 00:01

se eyxaristo file gia thn apanthsh

diamorfosa ton kodika os exis

Κώδικας: Επιλογή όλων

<% 
picID = Request&#40; "pid" &#41; 

Set Con = Server.CreateObject&#40; "ADODB.Connection" &#41; 
Con.Open "dsnnet" 
Set RS = Server.CreateObject&#40; "ADODB.Recordset" &#41; 
RS.ActiveConnection = Con 
RS.CursorType = 3 
RS.Open "SELECT picURL FROM pics WHERE pics_id=" & picsID

Set fso = Server.CreateObject&#40;"Scripting.FileSystemObject"&#41; 
fso.DeleteFile&#40;Server.MapPath&#40;picURL&#41;&#41;


RS.Open "DELETE * FROM pics WHERE pics_id=" & picsID 

%> 
kai perno to parakato minima lathous



Error Type:
Server.MapPath(), ASP 0171 (0x80004005)
The Path parameter must be specified for the MapPath method.
/picdel.asp, line 12

ti mporei na simbainei?

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

diagrafh arxeiou paralilla me diagrafh eggrafis

Δημοσίευση από skeftomilos » 19 Φεβ 2005 07:34

Η μέθοδος DeleteFile του FSO απαιτεί μία πλήρη διεύθυνση του προς διαγραφή αρχείου στο δίσκο. Δηλαδή μία διεύθυνση όπως "C:\Inetpub\wwwroot\pics\photo1.jpg" και όχι "pics/photo1.jpg". Ο καλύτερος τρόπος για να πάρεις αυτή τη διεύθυνση είναι να χρησιμοποιήσεις τη μέθοδο Server.MapPath που κάνει ακριβώς αυτή τη μετατροπή. Η μετατροπή γίνεται με βάση το φάκελο της τρέχουσας σελίδας ASP ή με βάση τo φάκελο ρίζα του SITE (που μπορεί βέβαια να είναι ο ίδιος). Στην πρώτη περίπτωση μιλάμε για relative path, στη δεύτερη για virtual. Η διέυθυνση "pics/photo1.jpg" είναι relative ενώ η "/pics/photo1.jpg" είναι virtual. Μην ανησυχείς για την επιλογή / ή \ γιατί η μέθοδος Server.MapPath τα θεωρεί τα ίδια.

Κανονικά θα έπρεπε να δουλεύει. Αν θέλεις δοκίμασε να βάλεις τις εικόνες στον ίδιο φάκελο με τη σελίδα ASP και άλλαξε την εντολή σε Server.MapPath("photo1.jpg") για να δεις τι γίνεται.

Μπορείς να παίρνεις πιο άμεσες απαντήσεις για τέτοιες απορίες κοιτάζοντας στο documentation του IIS. Φαντάζομαι έχεις εγκατεστημένο τον IIS έτσι δεν είναι? Το documentation περιλαμβάνει αναλυτική περιγραφή των αντικειμένων της ASP. Το ίδιο το documentation είναι γραμένο σε .asp σελίδες και επομένως δε μπορείς να το ανοίξεις με το My Computer, αλλά χρειάζεσαι τον browser. Γράψε την εξής διεύθυνση στον browser:

http://localhost/iisHelp/iis/misc/default.asp

Μετά ακολούθα αυτή τη διαδρομή στο Tree-View αριστερά:

Active Server Pages Guide
. ASP Build-in Objects
. .Server Object
. . . Server Properties
. . . . MapPath

Ο browser χρειάζεται το Java plug-in για να εμφανίσει το Tree-View αλλά φαντάζομαι θα υπάρχει.

Φυσικά υπάρχουν και άλλες πηγές για ASP, references, tutorials κ.λπ. Διάλεξε ότι σε βολεύει. Εγώ πάντως έχω βολευτεί το "γνήσιο" documentation του IIS και το έχω διαβάσει όλο. Έχει τα πάντα.

Όσο για το αντικείμενο FileSystemObject μπορείς να βρεις πληροφορίες είτε από το MSDN αν το έχεις εγκαταστήσει είτε από το documentation για τις Microsoft Windows Script Technologies. Είναι ένα απλό αρχείο βοήθειας "Script56.chm" όχι πολύ μεγάλο και μπορείς να το κάνεις download από το site της Microsoft.

Download Windows Script

Windows Script Technologies
. Script Runtime
. . FileSystemObject Object
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
geoki
Δημοσιεύσεις: 309
Εγγραφή: 07 Ιαν 2002 01:00
Τοποθεσία: Giannitsa

diagrafh arxeiou paralilla me diagrafh eggrafis

Δημοσίευση από geoki » 19 Φεβ 2005 09:12

nase kala file skeftomile

tha to dokimaso kai tha soy po

Απάντηση

Επιστροφή στο “ASP, ASP.NET”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης