Seminar aus Softwareentwicklung: Inside Java and .NET

Slides:



Advertisements
Ähnliche Präsentationen
Fortgeschrittene Aspekte von Software Security VU SS 2005
Advertisements

C Sharp (C#) Martin Saternus Senior Student Partner
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Rechnernetze und verteilte Systeme (BSRvS II)
Softwareentwicklung für Android
SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH.
Objektorientierte Programmierung
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java 2 Enterprise Edition (J2EE)
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
DOM (Document Object Model)
Das JavaCard-Betriebssystem
Java-AG Ausnahmebehandlung Gerhard Gröger.
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
OC-Pro ermöglicht, ohne Installation zusätzlicher Software, die benutzerfreundliche Kalkulation von Netzhautdicke und Flächen intra-/subretinaler Flüssigkeitsansammlungen.
Sicherheit von mobilem Code Hauptseminar: Sicherheit in vernetzten Systemen Sicherheit von mobilem Code Oliver Grassow.
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Systementwicklungsprojekt:
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Eine Entwicklungsumgebung im Web IFC-Seminar WS98/ Holger Otte.
Open Services Gateway Initiative
Laufzeitumgebungen – Das Beispiel der Java Virtual Machine
Entwurfs- und Implementationsdiagramme
JINI Security & Scalability JINI Security Hans-Peter Rötheli & Christian Gloor.
Java und Eclipse.
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Thread Synchronisation in JAVA
Oliver Spritzendorfer Thomas Fekete
Reinhard Stumptner Seminar Softwareentwicklung Dynamisches Laden und Binden in Java.
Learning By Doing WebStart Buch S.765 Verfahren, Java-Applikationen über das Internet an die Benützer zu verteilen. Die Java-Applikation wird auf dem.
Objectives Verstehen was unterDelegate verstanden wird
Objektorientierte Programmierung
EPROG Tutorium #5 Philipp Effenberger
Die Architektur der Java-VM
Robuste Programme durch Ausnahmebehandlung
->Prinzip ->Systeme ->Peer – to – Peer
7.2.4 Klassifikation mobilen Codes Nicht vergessen:  Sowohl das Fernkopieren als auch die Migration von Objekten setzt voraus, daß der Code entweder am.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Java-Kurs Übung Besprechung der Hausaufgabe
Folie: 1 JAVA Sicherheit TM Vortragender: Daniel Nowak.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Einführung in die OOP in Java
1 Softwareentwicklung mit.NET Teil 7.NET Security Dr. Ralph Zeller.
Mobile Code Security Im Rahmen des Seminars Web Security Andreas Marx WIF
Abstrakte Klassen und das Interface-Konzept
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
C++ FÜR cOMPUTERSPIELENTWICKLER
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
Implementieren von Klassen
 Präsentation transkript:

Seminar aus Softwareentwicklung: Inside Java and .NET Johanna Fitzinger

Sicherheitskonzept in Java Das Sandbox Sicherheitsmodell: Nicht vertrauenswürdige Programme laufen in einer geschützten Umgebung ab. Zugriff auf wichtige Systemressourcen wird dem Programm nicht gestattet Komponenten des Basis Sandbox Modells: Class Loader Class File Verifier Security Manager

Ursprüngliches Sandbox Modell JDK 1.0: Das Sandkasten Sicherheitsmodell des JDK 1.0 untersagte nicht vertrauenswürdigem Applet-Code unter anderem folgende Aktionen: Lesen oder Schreiben von der lokalen Platte Netzwerkverbindung zu einem Host aufzubauen mit Ausnahme des Hosts von dem das Applet geladen wurde Einen neuen Prozess zu starten Eine neue DLL zu laden.

Aufweichung der Sandbox JDK 1.1: Signierung von Applets JDK 1.2: flexibleres feinkörniges Sicherheitsmodell

Spracheigenschaften keine Pointer-Arithmetik strenge Typprüfung Garbage Collection automatisches Prüfen von Arraylängen Zugriffsrechte (public, protected, private) Einschränkung der Sichtbarkeit von Elementen Exception Handling

Class Loader Aufgaben: Laden,Trennen und Verwalten von Klassen getrennte Namensräume für Klassen die von verschiedenen Class Loadern geladen wurden Klassen aus verschiedenen Namensräume können nicht direkt interagieren Schutz der Java System-Klassen: Verhindern von Überschreibung der „trusted class libraries“ Zugriffsrechte auf Elemente innerhalb der Systemklassen-Packages müssen geschützt werden Code in Protection Domains einteilen Protection Domain definiert welche Rechte dem Code gegeben werden

Class Loader Architektur 1 eingebauter Class Loader(Bootstrap Class Loader), der für das Laden der Core-Klassen der JAVA API verantwortlich ist es kann bel. viele zusätzliche Class Loader geben für Web-Browser z.B. gibt es den Applet Class Loader Class Loader bilden Hierarchie Oberster Class Loader: Bootstrap Class Loader Bevor ein Class Loader eine Klasse lädt, beauftragt er seinen übergeordneten Class Loader, die Klasse für ihn zu laden. Bsp: ‘Network Class Loader‘ möchte folgende Klassen laden: java.lang.Integer -> wird vom Bootstrap Class Loader geladen -> kein Überschreiben der Klasse java.lang.Virus -> wird vom Network Class Loader geladen -> keinen Zugriff auf ‘protected‘ Elemente des packages java.lang

Class File Verifier Der Class File Verifier prüft ob das Programm nach den Regeln der JVM abläuft. Phase 1: Strukturelle Überprüfung der Klassendatei Phase 2: Semantische Überprüfungen Phase 3: Bytecode Verifikation Phase 4: Verifikation symbolischer Referenzen

Security Manager Der Security Manager überprüft ob Code potentiell gefährliche Operationen ausführen darf Kritische Aktionen: Zugriff auf Systemproperties Zugriffe auf das Dateisystem Manipulation/ Zugriff auf Threads Netzwerkzugriffe Definiert check-Methoden, die kritische Aktionen überwachen: z.B. checkRead(String file), checkAccess(Thread t) , checkDelete(Sting file),

Anfrage an Security Manager FileInputStream fis = new FileInputStream("Textdatei.txt"); Erzeugen des FileInputStream Objects -> Security Manager muss um Erlaubnis gefragt werden Ist ein Security Manager installiert NO Recht wird gewährt YES checkRead() wird aufgerufen Lesen erlaubt? NO checkRead() throws Exception YES checkRead() returns read wird ausgeführt

Security Manager Implementierung Vor JDK Version 1.2. war die Klasse java.lang.SecurityManager eine abstrakte Klasse. Um benutzerdefinierte Sicherheitsrichtlinien zu installieren musste man seinen eigenen Security Manager schreiben, und von der Klasse java.lang.SecurityManager ableiten Seit Java 2 konkrete Klasse, die eine default Implementierung des Security Managers darstellt Eine benutzerdefinierte Sicherheitsrichtlinie wird, anstatt in Java-Code, in einem ASCII-File, genannt policy file, definiert AccessControler überprüft Rechte Installieren des default Security Managers: -Djava.security.manager

Code Signing Signatur stellt sicher: Sender: Empfänger: Code stammt von einem bestimmten Autor (Datenidentität) Code wurde auf dem Weg vom Autor zum Nutzer nicht verändert (Datenintegrität) Sender: Empfänger: Schlüsselpaar erzeugen: keytool -genkey -alias me Jar-Archiv erstellen: jar cvf MeinArchiv.jar *.class Signieren: jarsigner MeinArchiv.jar me

Policy Policy File: Rechte (Permissions) werden ‘Code Sources‘ zugeordnet. Die zu gewährenden Rechte werden in .policy-Dateien gespeichert. Bearbeiten des Policy Files mit Hilfe von: policytool (im JDK bzw. JRE enthalten)  keystore “.keystore“; grant SignedBy "trustme" CodeBase "http://www.trustme.com/-" {      permission java.io.FilePermission "<<ALL FILES>>", "read, write, delete, execute"; permission java.security.SecurityPermission "getPolicy"; };

Protection Domains Wenn Typen durch einen Class Loader in die JVM geladen werden, wird jedem Typ genau eine Protection Domain zugeordnet.  Eine Protection Domain: definiert alle Permissions, die einer bestimmten Code Source gewährt werden. entspricht einem oder mehreren Grant-Statements in einem Policy File

Access Controller AccessController ist die Instanz in der Java-API, die die Verwaltung und Durchsetzung der Rechte kapselt Der Security Manager entscheidet nicht mehr selbst ob kritische Operation ausgeführt wird, sondern ruft die checkPermission(Permission perm) Methode des Access Controllers auf führt Stack Inspection durch und liefert eine Entscheidung: AccessControlException Zugriff erlaubt

Stack Inspection alle Rufer werden überprüft Nur alle Rufer die Permission besitzen, darf auf die Ressource zugegriffen werden deleteFile() xyzPermission 1 FilePermission xyz 2 delete() implies(..) AllPermission java.io.File 5 4 check Permission(..) implies(..) 6 3 Systemressource AccessController

Danke für die Aufmerksamkeit!