Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Grunläggande .net säkerhet

Postades av 2006-12-26 17:35:25 - Martin Adrian, i forum asp.net generellt, Tråden har 5 Kommentarer och lästs av 701 personer

Kan någon hjälpa mig att reda ut några saker med .Net säkerhet?

Jag förstår att man kan använd sig av .assert för att få reda på om man har tillgång till en viss resurs men varför vill man använda deny? Är det för att öka säkerheten innan man skall köra okänd kod? Är då inte detta snarare något för operativet att hålla reda på?

Dessutom är det en sak som förvillar mig mellan JIT och run-time. Antag till exempel att jag har en assembly som anropar native kod.
Jag lägger då till följande attribut:
[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];

Är det inte då så att när assembly:t laddas så kollar JIT-kompilatorn att den assembly som skall använda sig av min assembly har tillåtelse att köra unmanaged kod?

Varför behöver då run-time kolla detta varje gång unmanaged kod anropas?

Man kan dessutom ge native-funktioner attributet "SuppressUnmanagedCodeSecurityAttribute" vilket stänger av kontrollen. Om jag då skulle skriva skadlig kod skulle jag ju sätta detta på alla funktioner jag anropar och därmed gå runt evetuell tidigare deny.

Är assert det bästa sätta att kolla om man har en viss rättighet? Är det inte bättre att försöka göra det man vill och låta det generera ett securityexception om det inte går? Annars måste väl säkerhetstestet göras två gånger (en gång av mig och en gång av run-time)?

Jag måste ha missat något fundamentalt när det gäller .Net säkerhet.

Någon som vet om C++/CLI automatiskt lägger till attributet "SuppressUnmanagedCodeSecurityAttribute" på nativefunktioner? Hur bär man sig annars åt för att göra det (IJW lägger ju till nativefunktionerna med automatik).

Edit: Menar förståss demand och inte assert. Hittade också svaret på C++/CLI frågan (Ja)


Svara

Sv: Grunläggande .net säkerhet

Postades av 2006-12-28 01:27:23 - Ola Lindfeldt

Finessen är väl att du kan försäkra operativet (som får möjlighet att försäkra användaren) att din .exe inte kommer göra något dumt som att t.ex. skapa konstiga DLL-filer i system32-mappen, genom att explicit förbjuda sig själv åtkomst dit. Visst är det operativet som ska se till att säkerhetsprinciperna följs, men genom .Net-säkerheten berättar du för operativet vad koden gör resp. inte gör. T.ex. ett företagsnätverk kan ha principen att förbjuda start av osignade exe-filer som inte talar om/garanterar var på disken den kommer att skriva. Men om din assembly berättar för operativet att "tjena, jag vill ha ett stort hänglås på hårddisken" (deny) då får koden köras utan protester. Jag har lyckats undvika unmanaged code, så jag kan inte svara på den delen av frågan :)


Svara

Sv:Grunläggande .net säkerhet

Postades av 2006-12-28 15:24:55 - Martin Adrian

>T.ex. ett företagsnätverk kan ha principen att förbjuda start av osignade exe-filer som inte talar
>om/garanterar var på disken den kommer att skriva.

>Men om din assembly berättar för operativet att "tjena, jag vill ha ett stort hänglås på hårddisken"
>(deny) då får koden köras utan protester.

Jo men det gör man ju på assemblynivå, dvs assembly:SecurityPermission...

"Deny" gäller ju bara kod som anropas _från_ den funktion där jag sätter den.

(Tycker bara det är konstigt att alla exempel på .net säkerhet visar hur man gör deny men inte förklarar varför man skulle vilja göra det)


Svara

Sv: Grunläggande .net säkerhet

Postades av 2006-12-28 21:05:07 - Ola Lindfeldt

Man vill göra det av den anledning jag förklarade. Du försäkrar genom deny att din metod inte kan göra något dåligt. Och man kan dessutom alltså göra det på metodanropsnivå om man vill.
Så att appen kan starta, och exception uppstår först när ett sådant anrop sker.


Svara

Sv:Grunläggande .net säkerhet

Postades av 2006-12-29 08:30:24 - Martin Adrian

Jag är antagligen trög men jag förstår fortfarande inte.

Låt mig ta ett exempel.
<code>
void minmetod() {
// skapa write-permission till C:\Temp
FileIOPermission perm = new FileIOPermission(FileIOPermissionAccess.Write, @"C:\Temp");
// Se nu till att jag inte kan skriva i C:\Temp
perm.Deny();
// Varje skrivning till C:\Temp genererar nu en securityexception
...
// När metoden avslutas är det fritt fram att skriva till C:\temp igen
}
</code>

>Du försäkrar genom deny att din metod inte kan göra något dåligt.

Jo, men jag försäkrar det ju enbart internt i min metod. Utomstående funktioner som anropar min metod vet ju inte om det.
Dessutom känns det lite konstigt att lista saker som min metod får eller inte får göra. Kan tänka mig att metoden gör olika saker beroende på vilka rättigheter som finns men det löser man väl bäst med security exceptions:
<code>
try {
// read from HKLM
}
catch (SecurityException) {
try {
// nähä, det gick inte, försök läsa från HKCU istället
...
</code>

>Så att appen kan starta, och exception uppstår först när ett sådant anrop sker.

Det är här jag får problem. Om appen kan starta eller inte styrs väl av vilka assemblyattribut som är satta inte vad den gör i olika metoder? Om jag till exempel gör så här:

[assembly:FileIOPermissionAttribute(RequestMinimum, Write=@"C:\Temp")]

så kan min assembly inte starta om anroparen inte har skrivrättigheter i C:\Temp.

Men om jag inte sätter attributet ovan och anroparen inte har skrivrättigheter i C:\Temp och jag skriver där så blir det ett security exception lite senare. Vad är skillnaden?


Svara

Sv: Grunläggande .net säkerhet

Postades av 2006-12-29 15:35:15 - Ola Lindfeldt

Ok jag missförstod dig lite. Jag menade att du kan sätta sådana attribut även på dina egna klasser internt i appen samt dess metoder. Enligt MSDN: Allows security actions for FileIOPermission to be applied to code using declarative security.

Altså kan du genom detta försäkra anroparen / operativet att en viss metod som ska köras inte kan göra något dumt och man skulle kunna sätta upp säkerheten i operativet så att man inte tillåter kod som inte utlovar hög säkerhet.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
3 907
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies