Jag hittade en sida på nätet som la sig själv som
startsida i InternetExplorer, utan att jag blev tillfrågad.
Jag kikade vidare på koden och upptäckte att den
innehöll ett fso-objekt (objekt för filhantering)
som arbetade på klientsidan.
Scriptet kan helt klart undersöka hårddisken
efter befintliga katalogstrukturer och sedan
lägga till genvägar vart som helst på hårddisken.
Är detta på gränsen till vad som Javascript ska
klara av på klientsidan, eller finns det
gigantiska säkerhetsluckor som skulle kunna
haverera windows, endast genom ett besök på en
viss webbsida?
Tilläggas kan att det är skrivet i Javascript och
att jag själv normalt håller på med Vbscript.
Någon som VET om detta är en säkerhetsrisk?
------------------
"Life's a bitch who sucks... then you marry one who doesn't"
jag hävdar å det bestämdaste att javascript inte kan skriva/läsa till klientens hårddisk
Det är en sanning med modifikation. Du kan göra det med AcitveX-komponent som i detta fall, men skall då få en varning om detta ifall rättigheterna i IE inte blivit modifierade i förväg av användaren, eller via signerade script i Netscape, men återigen kommer det att generera en varning om ditt script inte blivit signerad av något av de godkända ombud som finns angivna i Netscapes inställningar, VeriSign är ett vanligt exempel. Tidigare har det publierats exempel på detta forum för att läsa filer, men av ovan nämda anledningar är det oftast inte speciellt användbart.
Men javascript och active-x är helt sklida teknologier och har absolut ingenting med varandra att göra.
Jodå, de kan visst ha med varandra att göra. JScript är anpassat till ActiveX-modellen, vilket gör att man både kan skriva och använda ActiveX-objekt (eller COM-objekt, som jag gillar att säga...) i JScript. Det går alldeles utmärkt att skicka en raket till månen mha JScript om man har rätt dll:er installerade på datorn. Vore så inte fallet skulle inte JScript gå att använda i asp, till exempel. Man kan använda exakt samma objekt på en vanlig html-fil på klienten som man kan använda i ett asp-script på servern om säkerhetsinställningarna är liberala.
Jo, men du måste ju skilja på Javascript som client-side teknik och JScript som axtive-x teknik.
Jag vidhåller envist att Javascrip som är utvecklat an Netscape och körs på klientsidan inte klarar av någon sorts filhantering :D
Vi är ju ärnå i Javascript-forumet, och inte i ASP.
Men du har säkert rätt angående vad man kan göra med JScript. Det ska jag inte argumentera om, för fet kan jag inte tillräckligt mycket om. (microsoft-påhitt, fnys...)
writeToFile('c:\\jstest.txt','JavaScriptgenererad text');
function writeToFile(filename,str) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalFileWrite")
var fo = new java.io.FileOutputStream(filename)
var p = new java.io.PrintWriter(fo, true)
p.println(str)
p.close()
fo.close()
netscape.security.PrivilegeManager.disablePrivilege("UniversalFileWrite")
}
Ok. Hade aldrig sett det där förut, och 3 böcker säger enhälligt att det inte går.
Fick det aldrig att fungera, dock.
Kan det vara så att JAVA är inblandat i det hela?
Snokade runt lite:
Question: How do I write a file from JavaScript?
Answer: Writing a file from JavaScript is just as easy as writing a file from a Java applet. Your script cannot write files itself; it should call a Java applet's public method which will actually do all the dirty file writing work for you.
The bad news is that
Writing is a privileged operation, and therefore your Java applet must be digitally signed in order to write files.
Applet signing for Internet Explorer is completely different from applet signing for Netscape Navigator.
Signed applets may not work properly in Netscape Navigator 3.
What's the worst, it's very insecure to put privileged operations in public methods of signed applets! If you publsh such an applet, a malicious code could easily subvert the applet's public methods, and you (the applet publisher/signer) will be sued for any damage!
Therefore, nobody publishes scripts that write files via signed applets, although in versions 4 of both major browsers it's technically possible
... och så var det. Faktum borde kvarstå: Javascript kan inte skriva till hårddisken. Men det är ju i och för sig inte relevant, då man kan använda det för att anropa JAVA som gör det åt en, Så du vinner i principfrågan och jag i sakfrågan :D
(Är jag jävlig nu?) :e
[Redigerat av Jon den 09 aug 2001]
Ett Java-objekt ja, men likafullt JavaScript-kod som styr det. Precis likadant som du kan använda objekt och moduler i andra program och script-språk. Dessa JavaModuler levereras med Netscape installationen och bör väl då ses som en del av applikationen, plattformen som JavaScriptet körs på.
Men, detta börjar spåra ur i en "hönan eller ägget"-konversation.
Ska man se det på det viset kan man skriva till filer i Java heller. Eftersom det är en plattformsberoende operation måste jvm:en ha en rutin skriven i t.ex. C för att kunna skriva till filer, och den C-rutinen måste vara inkapslad i en klass. Och sålunda kan i inga språk som är tolkade (eller kompilerade under körtid) alls skriva till filer...