Laten we Java leren. Kenmerken van de Java-taal

Wat is er gebeurd informatiebeveiliging? Dit is een staat van informatiebeveiliging die de vertrouwelijkheid, beschikbaarheid en integriteit ervan garandeert.

Om de staat van informatiebeveiliging te beoordelen, is het doorgaans noodzakelijk om bedreigingen en hun bronnen te begrijpen en te analyseren, de omvang van de schade, de waarschijnlijkheid van implementatie en relevantie van bedreigingen, risico's (optioneel) die van invloed kunnen zijn op ons systeem/informatie te beoordelen .

Naar mijn mening is het onmogelijk om de veiligheid van een enkele technologie of programmeertaal te beoordelen zonder verwijzing naar een specifieke implementatiemethode, dat wil zeggen zonder een specifiek kant-en-klaar softwareproduct in een taal met een gedetailleerde technische specificatie die de architectuur en functionaliteit. Maar dit zal ook niet genoeg zijn, omdat het noodzakelijk is om de beveiligingsstatus van een voltooid informatiesysteem te beoordelen met zijn specifieke architectuur, reeks componenten, bedrijfsprocessen, informatie en, ten slotte, mensen. Ik zal u een voorbeeld geven van het bouwen van een huis. We hebben materialen (zand, cement, steenslag, baksteen, enz.) en gereedschap (emmer, schop, troffel, enz.). We zullen de kwaliteit en betrouwbaarheid van het voltooide huis niet alleen kunnen beoordelen aan de hand van de gebruikte materialen/gereedschappen: hoe lang het meegaat, of er scheuren in zitten, of het koud of stil zal zijn. Je moet een huisontwerp, bouwtechnologie en een team van vakmensen kiezen. En pas na voltooiing van de constructie kunnen we de naleving van het project, GOST, SNiP's meten, metingen controleren op thermische bescherming, geluid, belastingen, de kwaliteit van cement analyseren en de meeste vragen beantwoorden. Maar de belangrijkste vraag is: “hoe lang zal dit duren?” we zullen geen exact antwoord hebben, omdat we niet alle bedrijfsomstandigheden van het huis kennen en alle factoren die de hele tijd van invloed zullen zijn.

Hoe veilig te zijn in Java

Laten we Java als voorbeeld nemen . Het is een objectgeoriënteerde programmeertaal; programma's die in Java zijn geschreven, worden vertaald in Java-bytecode, uitgevoerd door de Java Virtual Machine (JVM), een programma dat de bytecode verwerkt en als tolk instructies doorgeeft aan de hardware. Het voordeel van deze methode voor het uitvoeren van programma's is de volledige onafhankelijkheid van de bytecode van het besturingssysteem en de hardware, waardoor u Java-applicaties kunt uitvoeren op elk apparaat waarvoor een overeenkomstige virtuele machine bestaat.

« “Universele taal” klinkt mooi, maar het meest voorkomende probleem is dat het beide is achterkant medailles - geheugenlek in de JVM, wat leidt tot geheugenoverloop en crashes. In verband met dit probleem kunnen kwetsbaarheden niet worden uitgesloten, omdat het belangrijkste principe van betrouwbaarheid is: hoe eenvoudiger, hoe beter. In dit geval is de taart zo complex samengesteld om de compatibiliteit van een groot aantal platforms en besturingssystemen te garanderen dat het bijna onmogelijk is om alle daarin aangetroffen kwetsbaarheden op te sporen, te sluiten en ze snel te elimineren. Voor Microsoft kunnen kwetsbaarheden na vier tot acht jaar worden gevonden en verholpen, waarbij geen rekening wordt gehouden met niet-aangegeven mogelijkheden die opzettelijk of per ongeluk zijn achtergelaten.

Uit mijn praktijk: als programmeurs nieuwe functionaliteit toevoegen die gerelateerd is aan iets dat al geïmplementeerd is, of repareren oude functionaliteit, dan breken ze in 15% van de gevallen een eerder werkend product. En als er geen volledige tests worden uitgevoerd, is het eindresultaat een product met nieuwe functionaliteit, maar waarvan de oude gedeeltelijk niet werkt. Er zijn ook verschillen in de manier waarop de code is geschreven verschillende platforms, OS-versies, software. In dit opzicht kun je je voorstellen hoe moeilijk het is om de Java-programmeertaal en JVM te onderhouden, om nog maar te zwijgen van beveiligingsproblemen.

Op huidige moment Java Development Kit 10 is uitgebracht, die ons standaard beveiligingsmechanismen biedt die zijn vrijgegeven voor Java SE 8 en worden beschreven in de beveiligingsdocumentatie. De tiende versie voegde niets nieuws toe.

Ik merk op dat Oracle een Java Security Resource Center heeft. Over het geheel genomen verdeelt het bedrijf Java-beveiliging in vier hoofdsecties:

A) Ontwikkelaars moeten:

Bewaak en gebruik alle nieuwste ontwikkelings- en beveiligingsupdates;

Gebruik controleprogramma's voor de correctheid van de code (bijvoorbeeld Checker Framework);

B) systeembeheerders moeten:

Bewaak en gebruik alle nieuwste updates voor Java en de benodigde componenten om het product te laten werken (inclusief besturingssysteem, bibliotheken, frameworks, enz.);

Gebruik de Java-implementatieregels beschreven door en ;

Gebruik een betrouwbare tijdstempel.

IN) eindgebruikers moeten:

Gebruik altijd de nieuwste originele versie van Java;

D) Beveiligingsprofessionals moeten:

Gebruik geavanceerde beheer- en beveiligingstools (bijvoorbeeld Advanced Management Console);

Toezicht houden op de tijdige installatie van alle beveiligingsupdates;

Het is belangrijk dat iedereen de veiligheidsregels en -eisen volgt en naleeft. Alleen samen en met gebruikmaking van alle beschikbare maatregelen (technisch, organisatorisch) kan een veiligheidstoestand op een adequaat niveau worden bereikt. Zoals uit mijn praktijk blijkt, zijn IT- en informatiebeveiligingsdiensten in 60% van de organisaties prima op orde, net als bij gebruikers die zakelijke apparaten gebruiken en verbonden zijn met één domein. Maar de meest ongecontroleerde mensen op dit gebied zijn ontwikkelaars, teamleiders en architecten.

Softwareontwikkeling en beveiligingsproblemen

Meer in het algemeen zijn de belangrijkste oorzaken van beveiligingsproblemen in applicaties tijdens softwareontwikkeling de volgende:

A) Gebrek aan begrip van beveiligingsterminologie in het algemeen, om nog maar te zwijgen van specifieke kennis en toegepaste oplossingen.

In de regel hebben ontwikkelaars beveiliging ingebouwd beste scenario wordt geassocieerd met de volgende zaken: toegangsbeheer en logboekregistratie en wachtwoordbeveiliging, minder vaak - verbindingsbeveiliging op https-niveau (met behulp van coderingsmechanismen die standaard beschikbaar zijn). Dat wil zeggen dat ze formeel beveiligingsmethoden zullen gebruiken, die in feite formeel zullen blijven, ‘voor de show’, zonder rekening te houden met de vereisten en nuances:

Voor wachtwoorden: er worden meestal standaardwaarden gebruikt en de lengte, sterkte, wijzigingsfrequentie, niet-herhaling en aantal pogingen worden niet extra geconfigureerd. Heel vaak kunnen deze parameters niet verder worden aangepast, omdat ze niet zijn opgenomen in de softwareontwikkelingsscope, wat leidt tot de noodzaak om code toe te voegen.

Wat betreft toegangsbeheer en loggen: in het beste geval beschreven ontwikkelaars gebruikersgroepen of rollen en toegang tot objecten die beschikbaar zouden moeten zijn in de software. In het ergste geval ‘verdeelden’ de ontwikkelaars zelf secties en objecten in secties en objecten die nodig zijn voor gebruikers en beheerders. In het eerste geval krijgen we een systeem dat flexibel kan worden geconfigureerd, maar dat veel tijd vergt voor het opzetten en overeenkomen van rechten. In de tweede - een formeel toegangscontrolesysteem. Bovendien moeten ontwikkelaars begrijpen welke informatie en in welke mate moet worden vastgelegd. Vaak krijgen ze deze informatie echter niet, wat resulteert in logbestanden die niet gedetailleerd genoeg zijn om incidenten te onderzoeken of te begrijpen wat er in de software gebeurt. Of tot overmatige opslag van logbestanden en groot volume informatie, die aanzienlijke beperkingen oplegt aan de mogelijkheid om informatie gedurende de vereiste periode op te slaan (bijvoorbeeld één tot drie jaar) of er is een noodzaak om informatie aan te schaffen extra opslagruimte informatie. Wanneer informatie overmatig wordt vastgelegd, ontstaan ​​er extra problemen met de snelheid van analyse en analyse van incidenten en de snelheid van het vinden van de benodigde informatie. Redundantie kan ook extra financiering vereisen om personeel uit te breiden, SIEM-systemen aan te schaffen met unieke regels voor het verwerken van informatie, of leiden tot risico's die verband houden met verouderde informatie. Tegelijkertijd wordt er te veel tijd besteed aan het analyseren en verwerken van informatie.

Bescherming van communicatiekanalen is een even belangrijk punt, vooral voor betalingen en banksystemen, waar naast de openbaarmaking van persoonlijke en persoonsgegevens ook financiële verliezen mogelijk zijn. Meestal komt het voor dat ze er niet aan denken om de kanalen en het medium voor informatieoverdracht te beschermen, en als ze dat wel doen, gebruiken ze de “standaard” instellingen, bijvoorbeeld TLS/SSL. Maar het heeft ook zijn eigen bijzonderheden met betrekking tot de keuze van de protocolversie (TLS 1.1, 1.2, 1.3 of SSL v1-3), het coderingsalgoritme (RC4, IDEA, Triple DES, SEED, Camellia of AES) en de sleutellengte. Soms wordt bijvoorbeeld de juiste gekozen TLS-protocol 1.2, met AES-codering, een sleutellengte van 256 bits, maar vergeet de mogelijkheid om een ​​adres op poort 443 voor HTTPS en/of poort 80 voor HTTP te selecteren, in plaats van poort 80 te blokkeren, wat resulteert in de mogelijkheid om toegang te krijgen via een onbeveiligd kanaal. Of ze verhogen bijvoorbeeld de infrastructuur naar virtuele machines en denk helemaal niet na over de noodzaak om te sluiten netwerktoegang tussen virtuele machines.

B) Het tweede probleem heeft te maken met het bedrijfsleven, omdat er geld wordt geïnvesteerd in specifieke speciale functionaliteit die geen rekening houdt met beveiligingsblokken.

Helaas begrijpen bedrijven niet altijd waarom ze middelen moeten besteden aan beveiligingseenheden als deze geen functioneel voordeel opleveren, het product niet meer geld zal opleveren en er alleen maar waarschijnlijke risico's zijn die mogelijk niet werken. Bedrijven begrijpen vaker de noodzaak om te investeren in beveiliging wanneer er al een informatiebeveiligingsincident heeft plaatsgevonden.

Helaas is dit niet alleen de schuld van het bedrijf, maar ook van de omgeving, die:

Begrijpt ook de veiligheid niet;

Het budget voor inis gespaard (ze worden helemaal niet aangenomen, of er worden zeer gespecialiseerde specialisten aangenomen, of er wordt één persoon aangenomen die voor alles verantwoordelijk is);

Het is niet gelukt om op overtuigende wijze de behoefte aan veiligheid over te brengen en de huidige risico's (reputatie, financieel, tijd) correct te rechtvaardigen.

C) Probleem met communicatie in het bedrijf of het ontbreken daarvan.

Dit is het geval wanneer een bedrijf en zijn omgeving de noodzaak en het belang van informatiebeveiliging begrijpen. Ze hebben budgetten toegewezen en geschikte specialisten ingehuurd, maar er doen zich problemen voor in de communicatie tussen bedrijfseenheden en informatiebeveiligings-/IT-diensten en ontwikkelaars.

D) Gebrek aan bewustzijn bij gewone bedrijfsgebruikers op het gebied van informatiebeveiliging.

Laten we aannemen dat er alle noodzakelijke afdelingen, specialisten, technische en organisatorische maatregelen. Maar gebruikers zijn eigenwijs en willen niet volgens de regels werken. Dit is een veel voorkomende situatie en moet ook alomvattend worden opgelost, omdat mensen niet begrijpen waarom ze extra werk nodig hebben om te voldoen aan informatiebeveiligingsproblemen (bestanden scannen met een antivirusprogramma, onthoud complexe wachtwoorden, het beleid en de bedrijfsprocessen kennen en naleven, enz.). Het is noodzakelijk om periodiek masterclasses te organiseren, op het alledaagse niveau uit te leggen wat informatiebeveiliging is, welke problemen en oplossingen er zijn, de mondiale doelen en doelstellingen van informatiebeveiliging, hun impact op het bedrijfsleven, te communiceren en te motiveren.

E) Gebrek aan i– inzijn niet altijd betrokken bij softwareontwikkeling, en programmeurs denken zelf na over de veiligheid van de architectuur en het gebruik van geschreven en kant-en-klare sjablonen Beveiligingspatronen.

Ontwikkelaars kennen en kunnen niet alle nuances kennen, omdat het hun taak is om de ontwikkeling te voltooien en door te gaan naar de volgende. Als je je verdiept in de ontwikkeling zelf, is het proces veel ingewikkelder dan het lijkt. Daarom is het noodzakelijk om de taak duidelijk van het bedrijf te ontvangen, deze op te splitsen in begrijpelijke minitaken voor ontwikkelaars, ontwikkeling uit te voeren, alfa- en bètatests uit te voeren, belasting- en functionele tests te laden, fouten te corrigeren, terug te keren naar tests - dit proces is cyclisch en lang. Het is daarom niet verrassend dat ze niet genoeg middelen hebben om de veiligheid van het product tot in het kleinste detail te doordenken.

Om over veiligheid te kunnen praten, moeten de hierboven beschreven problemen worden opgelost. Ik beschrijf niet specifiek oplossingsopties, omdat alles afhangt van specifieke problemen, omgeving en omstandigheden. Er bestaat geen universele pil en alle mogelijke maatregelen moeten worden toegepast. De belangrijkste taak is ervoor te zorgen dat alle werknemers van het bedrijf de informatiebeveiligingsvereisten begrijpen, begrijpen en naleven, en geïnteresseerd zijn om deze na te leven. En alleen dan zal het mogelijk zijn om te praten over de effectiviteit en het goede niveau van volwassenheid op het gebied van informatiebeveiliging in het bedrijf.

De programmeertaal Java en het bijbehorende zijn ontworpen om ervoor te zorgen dat programma's, zodra ze zijn ontwikkeld en gecompileerd, in binaire vorm via internet worden geleverd en op elke machine die Java ondersteunt, kunnen draaien. Beveiliging is vanaf het begin onderdeel geweest van de ontwikkeling van Java. IN deze sectie De werking van dit beveiligingssysteem zal worden onderzocht.

Java is een typeveilige taal. Dit betekent dat de compiler elke poging om de variabele op deze manier te gebruiken, zal afwijzen.



Laten we haar type matchen. Ter vergelijking, overweeg het volgende

Het genereert een willekeurig getal en slaat dit op in pointer p. Vervolgens slaat het de nulbyte op op het adres in p, en overschrijft wat er eerder was: code of gegevens. In Java zijn constructies die op deze manier typen combineren, verboden door de grammatica zelf. Bovendien heeft Java geen pointervariabelen, geen typecasting, geen door de gebruiker gecontroleerde geheugentoewijzing (zoals malloc en free), en worden alle arrayreferenties tijdens runtime gecontroleerd.

Java-programma's worden gecompileerd in tussenliggende binaire code, genaamd JVM-bytecode. Er zijn ongeveer 100 opdrachten in de JVM, waarvan de meeste objecten plaatsen bepaald soort op de stapel, knal ze van de stapel of combineer op rekenkundige wijze twee items op de stapel. Deze JVM-programma's worden over het algemeen geïnterpreteerd, zij het tot op zekere hoogte
In sommige gevallen kunnen ze worden samengevoegd machinetaal voor een snellere uitvoering. In het Java-model zijn applets die via internet worden verzonden voor uitvoering op afstand JVM-programma's.

Wanneer een applet arriveert, wordt deze door een proces geleid dat de JVM-bytecode controleert om te zien of deze aan bepaalde regels voldoet. Een correct gecompileerde applet zal deze automatisch matchen, maar niets weerhoudt aanvallers ervan een JVM-applet in JVM-assembleertaal te schrijven. De verificatieprocedure omvat het zoeken naar antwoorden op de volgende vragen:

1. Probeert de applet pointers te vervalsen?

2. Schendt het de toegangsbeperkingen voor leden van privélessen?

3. Probeert het een variabele van het ene type te gebruiken als een variabele van een ander type?

4. Genereert het een stack overflow of underflow?

5. Maakt het illegale conversies van variabelen van het ene type naar variabelen van een ander type?

Als de applet al deze tests doorstaat, kan deze worden uitgevoerd zonder dat u zich zorgen hoeft te maken dat deze toegang krijgt tot geheugengebieden die niet bedoeld zijn om te worden gebruikt.

Applets kunnen echter nog steeds systeemaanroepen uitvoeren door Java-methoden (procedures) aan te roepen die voor deze doeleinden zijn bedoeld. De methoden die hiervoor in Java worden gebruikt, zijn voortdurend verbeterd. In de eerste versie van Java, JDK (Java Development Kit) 1.0, waren applets verdeeld in twee klassen: vertrouwd en niet-vertrouwd. Applets ontvangen van lokale schijf, waren betrouwbaar en mochten elke systeemoproep doen die ze nodig hadden. Applets die via internet werden ontvangen, werden daarentegen als onbetrouwbaar beschouwd. Ze werden uitgevoerd in een zandbak, zoals weergegeven in Fig. 9.33 uur, en ze mochten praktisch niets doen.

Nadat hij ervaring had opgedaan met dit model, besloot Sun dat het te beperkend was. JDK 1.1 introduceerde digitale codeondertekening. Wanneer een applet van internet arriveerde, werd gecontroleerd of deze was ondertekend door een persoon of organisatie die de gebruiker vertrouwde (zoals bepaald door de gebruikerslijst met vertrouwde houders van digitale handtekeningen). Als de handtekening vertrouwd kon worden, kon de applet doen wat hij wilde; anders draaide hij in een sandbox met strikte beperkingen.

Na het opdoen van meer ervaring bleek ook dit systeem onbevredigend te zijn, waardoor het beveiligingsmodel opnieuw werd gewijzigd. JDK 1.2 introduceerde een configureerbaar, fijnmazig beveiligingsbeleid dat van toepassing is op alle applets, zowel lokaal als extern. Dit beveiligingsmodel is zo complex dat het een apart boek verdient (Gong, 1999), dus we zullen slechts een korte samenvatting geven van enkele van de belangrijkste kenmerken ervan. Elke applet wordt gekenmerkt door twee dingen: waar deze vandaan komt en wie deze heeft ondertekend. De vraag waar het vandaan komt wordt beantwoord door de URL, en de vraag wie het heeft ondertekend wordt beantwoord door de privésleutel die werd gebruikt om het digitaal te ondertekenen. Elke gebruiker kan een beveiligingsbeleid opstellen dat bestaat uit een lijst met regels. Elke regel kan de URL, de eigenaar van de handtekening, het object en de actie vermelden die de applet op het object kan uitvoeren als de URL van de applet

en de eigenaar van de handtekening komen overeen met die gespecificeerd in de regel. Conceptueel wordt de verstrekte informatie weergegeven in de tabel. 9.3, hoewel het in werkelijkheid anders is geformatteerd en betrekking heeft op de Java-klassenhiërarchie.


Eén type actie geeft toegang tot het bestand. Een actie kan een specifiek bestand of map specificeren, een set van alle bestanden in een bepaalde map, of een set van alle bestanden en mappen die recursief in een bepaalde map zijn opgenomen. Drie regels in de tabel. 9.3 komen overeen met deze drie gevallen. Op de eerste regel heeft gebruiker Susan haar machtigingsrecord zo ingesteld dat applets die afkomstig zijn van haar belastinggegevensverwerker, genaamd www.taxprep.com, en ondertekend door het verwerkerbedrijf, leestoegang hebben tot haar belastinggegevens in de 1040.xls bestand. . Ze kunnen alleen dit bestand lezen, wat geen enkele andere applets kunnen lezen. Bovendien kunnen alle applets uit alle bronnen, of ze nu ondertekend zijn of niet, bestanden in de map /usr/tmp lezen en schrijven.

Verder vertrouwt Susan voldoende op Microsoft Corporation om applets die van haar website zijn verkregen en door Microsoft zijn ondertekend, toe te staan ​​bestanden onder de Office-map in de mappenstructuur te lezen, schrijven en verwijderen, bijvoorbeeld om defecten te herstellen en nieuwe versies te installeren. software. Om de handtekeningen te verifiëren moet Susan de vereiste openbare sleutel op haar schijf hebben staan, of deze dynamisch verkrijgen, bijvoorbeeld in de vorm van een certificaat dat is ondertekend door een bedrijf dat zij vertrouwt en waarvan zij de openbare sleutel heeft.

Niet alleen bestanden kunnen fungeren als beschermde bronnen. U kunt ook de netwerktoegang beveiligen. Hier is het object een specifieke poort op een specifieke computer. De computer wordt gespecificeerd met behulp van zijn IP-adres of DNS-naam; De poorten op deze computer worden aangegeven met een reeks cijfers. Mogelijke acties zijn onder meer verbinding maken met de externe computer en verbindingen accepteren die afkomstig zijn van de externe computer. De applet heeft dus toegang tot het netwerk, maar deze toegang is beperkt tot alleen communicatie met de computers die expliciet in de machtigingslijst staan ​​vermeld. Applets kunnen indien nodig dynamisch worden geladen extra code(klassen), maar door de gebruiker geleverde klassenladers kunnen strikte controle uitoefenen over welke machines deze klassen kunnen verkrijgen. Er zijn ook vele andere veiligheidsvoorzieningen.

Meer over het onderwerp Beveiliging in het Java-systeem:

  1. § 39 Classificatie van contracten in bepaalde soorten. – Romeinse classificatie. – Systeem van Pruisisch recht, Franse en Oostenrijkse code. – Russisch boogsysteem. – Het systeem van de huidige presentatie.

In deze gids bespreken we alles wat je moet weten voordat je gaat studeren. programmeren in Java. U leert over de mogelijkheden van het platform, de toepassing ervan en hoe u op de juiste manier Java kunt leren.

Wat is de Java-programmeertaal?

In 1991 werd het "Green Team", een divisie van Sun Microsystems, geleid door James Gosling, creëerde een taal voor het programmeren van huishoudens elektronische apparaten. Destijds heette het Eik (“Eik”). Waarom "Eik"? Simpelweg omdat deze boom buiten het raam van Goslings kantoor groeide.

Het Green Team demonstreerde het gebruik van Oak in een interactieve tv. Maar voor digitaal kabeltelevisie In die jaren was deze technologie te geavanceerd. Tegelijkertijd won het internet aan populariteit, waarvoor de nieuwe programmeertaal het meest geschikt was.

Na enige tijd werd de nieuwe taal omgedoopt tot Groen, en daarna - Java, ter ere van koffie van het eiland Java. Daarom is het Java-logo voorzien van een koffiemok.

Tijdens de ontwikkeling van Java was C/C++ populair, dus maakte Gosling de syntaxis van de taal vergelijkbaar met C/C++ en implementeerde de " schrijf één keer - voer overal uit" In 1995 bracht Sun Microsystems de eerste officiële versie van Java uit. En tegelijkertijd werd aangekondigd dat Java zou worden opgenomen in de Netscape Navigator-browser.

In 2010 werd Sun Microsystems, samen met de programmeertaal Java, overgenomen door Oracle Corporation.

Geschiedenis van Java-versies

  1. Juni 1991 – start van het ontwikkelingsproject programmeertaal Java.
  2. JDK 1.0 – januari 1996.
  3. JDK 1.1 – februari 1997.
  4. J2SE 1.2 – december 1998.
  5. J2SE 1.3 – mei 2000.
  6. J2SE 1.4 – februari 2002.
  7. J2SE 5.0 – september 2004.
  8. Java SE 6 - december 2006.
  9. Java SE 7 – juli 2011.
  10. Java SE 8 – 18 maart 2014.
  11. Java SE 9 – 21 september 2017.

Java-programmeertaalfuncties

Java is een platformonafhankelijke taal

Java-code geschreven op één platform ( dat wil zeggen, het besturingssysteem), kan zonder aanpassingen op andere platforms worden uitgevoerd.

Voor Java-opstartprogramma Er wordt gebruik gemaakt van een Java virtuele machine ( Java virtuele machine, JVM). De JVM verwerkt de bytecode, waarna de processor de van de JVM ontvangen code verwerkt. Alle virtuele machines werken op dezelfde manier, dus dezelfde code werkt op alle besturingssystemen hetzelfde, wat Java tot een platformonafhankelijke programmeertaal maakt.

Objectgeoriënteerde programmeertaal

Er zijn verschillende programmeerstijlen, en een van de meest populaire is objectgeoriënteerd programmeren. Met deze aanpak complex probleem wordt opgesplitst in kleinere door objecten te maken. Hierdoor kan de code hergebruikt worden.

Objectgeoriënteerde functies zijn te vinden in veel programmeertalen, waaronder Java, Python en C++. Als je serieus wilt leren programmeren, zijn objectgeoriënteerde benaderingen de moeite waard om aan je leerplan toe te voegen.

Java is snel

Vroege versies programmeertaal Java is vaak bekritiseerd langzaam werk. Maar vandaag is de situatie dramatisch veranderd. Nieuwe versies van de JVM werken veel sneller, en de processors die deze interpreteren worden steeds sneller.

Tegenwoordig is Java een van de snelste programmeertalen. Goed geoptimaliseerde Java-code werkt bijna net zo snel als programmeertalen op laag niveau zoals C/C++ en veel sneller dan Python, PHP, enz.

Java is een veilig platform

Java is:

  • een veilig platform voor het ontwikkelen en lanceren van applicaties;
  • biedt hulpmiddelen voor automatisch geheugenbeheer, waardoor de kwetsbaarheid van de code wordt verminderd;
  • zorgt voor een veilige gegevensoverdracht.

Uitgebreide kernbibliotheek

Een van de redenen waarom Java zo wijdverspreid is, is de enorme standaardbibliotheek. Het bevat honderden klassen en methoden uit verschillende pakketten die het leven van ontwikkelaars gemakkelijker maken. Bijvoorbeeld,

java.lang is geavanceerde functies voor strings, arrays, enz.

java.util – bibliotheek voor het werken met datastructuren, reguliere expressies, datum en tijd, enz.

kava.io - bibliotheek voor bestandsinvoer/uitvoer, afhandeling van uitzonderingen, enz.

Toepassing van het Java-platform

Voordat je Java leert programmeren vanaf nul moet je weten dat meer dan 3 miljard apparaten over de hele wereld op dit platform werken. Waar kan het precies voor gebruikt worden:

  1. Android-applicaties - Voor het ontwikkelen van Android-applicaties wordt vaak de programmeertaal Java gebruikt in combinatie met de Android SDK ( uit de Engelse softwareontwikkelingskit - softwareontwikkelingskit).
  2. Webapplicaties - Java wordt gebruikt om webapplicaties te maken met behulp van serverprogramma's, Struts-framework en JSP. Enkele populaire webapplicaties geschreven in Java zijn: Google.com, Facebook.com, eBay.com, LinkedIn.com.

Het is vermeldenswaard dat deze sites niet noodzakelijkerwijs uitsluitend in Java zijn geschreven en mogelijk ook andere programmeertalen gebruiken.

  1. Software-ontwikkeling– programma's als Eclipse, OpenOffice, Vuze, MATLAB en vele andere zijn geschreven in Java.
  2. Big Data-verwerking – om “big data” te verwerken, kunt u het Hadoop-framework gebruiken dat in Java is geschreven.
  3. Handelssystemen– gebruik van het platform Oracle Extreme Java-handelsplatform, kunt u programma's schrijven voor de handel.
  4. Ingebouwde apparaten– Tegenwoordig zijn miljarden apparaten, zoals tv's, simkaarten, Blu-ray-spelers, enz., gebaseerd op Java Embedded-technologie van Oracle.

Ook programmeren in Java wordt gebruikt om games, wetenschappelijke toepassingen ( bijvoorbeeld voor natuurlijke taalverwerking) en op vele andere gebieden.

Java-terminologie die u moet kennen

Java is een reeks technologieën ( programmeertaal en computerplatform ), ontworpen om software te maken en uit te voeren. De term Java verwijst echter vaak naar de programmeertaal zelf.

Programmeertaal Java is een platformonafhankelijke, objectgeoriënteerde programmeertaal voor algemene doeleinden met uitgebreide mogelijkheden.

Java 9 is de nieuwste versie van Java op het moment van schrijven.

Java EE, Java Me en Java SE - deze namen staan ​​respectievelijk voor Java Enterprise Edition, Micro Edition en Standard Edition.

Java EE is gericht op applicaties die op servers draaien. Java ME is ontworpen voor apparaten met een beperkt stroomverbruik, zoals embedded apparaten. Java SE is de standaardeditie van Java voor het schrijven van algemene programma's.

Als je nieuw bent bij Java-programmering, raden we aan te beginnen met Java SE.

JVM - Java virtuele machine (" Virtuele Java-machine") is een programma waarmee een computer programma's kan uitvoeren die in Java zijn geschreven.

JRE – Java Runtime Environment (“ Java-runtime") omvat de JVM, bijbehorende bibliotheken en andere componenten die nodig zijn om programma's uit te voeren. Maar de JRE beschikt niet over een compiler, debugger of andere ontwikkelingstools.

JDK – Java-ontwikkelingskit Java-ontwikkelaar) bevat de JRE en andere ontwikkelingstools zoals compilers, debuggers, enz.

Hoe u Java op uw besturingssysteem kunt uitvoeren

Java uitvoeren op Mac OS

Hier leest u wat u voor Java kunt doen programmeren vanaf nul en het platform installeren op Mac OS X of macOS:

  1. Download de nieuwste versie van Java ( JDK) met Java SE-downloadpagina's.
  2. Dubbelklik op het gedownloade DMG-bestand en volg de instructies van het installatieprogramma.
  3. Om de installatie te verifiëren, opent u een terminal en voert u de volgende opdracht in:

javac-versie

Als Java correct is geïnstalleerd, wordt de programmaversie op het scherm weergegeven ( bijvoorbeeld Javac 1.8.0_60).

De volgende stap is het installeren van de IDE ( geïntegreerde ontwikkelomgeving) voor het schrijven en uitvoeren van Java-code. Wij zullen installeren gratis versie IntelliJ IDEA en voer er Java op uit. Hier is wat u hiervoor moet doen:

  1. Ga naar IntelliJ-downloadpagina en download de gratis Community Edition.
  1. Open het gedownloade DMG-bestand en volg de installatie-instructies. Voor snelle toegang kunt u IntelliJ IDEA naar de map Programma's verplaatsen.
  2. Open IntelliJ IDEA. Selecteer de optie “Instellingen niet importeren” (“ Importeer geen instellingen") en klik op "Ok". Accepteer hierna het privacybeleid van Jetbrains door op de knop “Accepteren” te klikken.
  3. Nu kunt u de interface voor uzelf aanpassen. U kunt deze stap ook overslaan en alles op de standaard laten staan. Als u het niet zeker weet, kunt u deze stap overslaan door op de knop “Alles overslaan en standaardinstellingen instellen” te klikken (“ Sla alles over en stel de standaardinstellingen in»).


  1. Het programma toont u een welkomstpagina. Klik op de knop “Nieuw project aanmaken” (“ Maak een nieuw project»).
  2. In het volgende venster selecteert u "Java" in het linkerdeelvenster en klikt u op "Nieuw" bovenaan het programmavenster om "JDK" te selecteren. Hier moet u de locatie selecteren waar u de JDK hebt geïnstalleerd en vervolgens op Volgende klikken.


  1. U heeft de mogelijkheid om een ​​project op basis van een sjabloon aan te maken (“Project aanmaken op basis van sjabloon”). We negeren het en klikken op de knop "Volgende".
  2. In de volgende installatiestap programmeertaal Java voer de projectnaam in en klik op de knop "Voltooien".
  3. In het linkerpaneel ziet u uw project. Als het paneel niet zichtbaar is, ga dan naar het menu Bekeken > Gereedschapsvensters>Project.
  4. Ga naar Hallo > Nieuw > Java en geef de klasse een naam. Wij noemden het Eerste.


  1. Om het programma dat u zojuist hebt geschreven uit te voeren, gaat u naar Uitvoeren > Uitvoeren... Klik op Eerste ( dat wil zeggen, de naam van het bestand dat we hebben gemaakt


Hoe Java op Linux uit te voeren

Om voorbeelden uit te voeren programmeerlessen vanaf nul Java op Linux heeft de JAVA SE Development Kit nodig ( JDK) en IDE voor het ontwikkelen van uw projecten. Volg de instructies stap voor stap om aan de slag te gaan met Java.

Installeer Java

  1. Open een terminal en typ het volgende commando to Java-installaties:

    sudo add-apt-repository ppa:webupd8team/java


    sudo apt-update; sudo apt install oracle-java8-installer

  1. Accepteer de licentieovereenkomst en de gebruiksvoorwaarden door respectievelijk op “OK” en “Ja” te klikken.
  2. U hebt Java geïnstalleerd. Om te controleren of de installatie succesvol was, voert u de volgende opdracht in een terminal in:

java-versie

Als het wordt weergegeven huidige versie, de installatie is gelukt. Zo niet, neem dan contact op met Help-pagina van Oracle.

IntelliJ IDEA installeren

  1. Ga naar.


  1. Download de gratis Community Edition door op de knop "Downloaden" te klikken.
  2. Na het downloaden verander de map in de terminal naar uw downloadmap en pak het Java tar-bestand uit in de map /opt met de volgende opdracht:

sudo tar xf .tar.gz -C /opt/

  1. Na het uitpakken wijzigt u de map in de bin-map van het IntelliJ IDEA-programma:

    cd /opt/ /bak

  2. Om de IDE te starten, voert u de volgende opdracht in:
  3. Selecteer 'Instellingen niet importeren' (" Importeer geen instellingen") en klik op "OK". Hierna accepteren wij het privacybeleid van Jetbrains door op de knop “Accepteren” te klikken.
  4. Nu de doorgang programmeercursussen Java, u kunt de interface zelf aanpassen. Maak een snelkoppeling op uw bureaublad voor snelle toegang tot het programma. Om daarna de IDE te starten, klikt u op "Volgende" in alle volgende fasen.
  5. Het programma toont de welkomstpagina. Klik op 'Nieuw project maken' (" Maak een nieuw project»).
  6. Selecteer in het volgende venster "Java" in het linkerdeelvenster en zorg ervoor dat Java is geselecteerd in de Project SDK-regel. Als dit niet het geval is, selecteert u de locatie waar u hebt geïnstalleerd JDK: /usr/lib/jvm/java-8-oracle.


  1. Klik tweemaal op “Volgende” en maak een project aan.
  2. Voer in de volgende stap een projectnaam in en klik op de knop “Voltooien”. Nu ziet u in het linkerpaneel uw project. Als dit paneel niet zichtbaar is, ga dan naar het menu Weergaven > Gereedschapsvensters > Project.
  3. Voeg een nieuwe Java-klasse toe. Selecteer src in het linkerpaneel klik met de rechtermuisknop en ga naar Nieuw > Java-klasse. Geef een klassenaam op. De klassenaam mag geen spaties bevatten.


  1. Schrijf de Java-code en sla het project op.
  2. Om het programma uit te voeren, ga naar Uitvoeren > Uitvoeren... Klik op HelloWorld ( projectnaam) - het programma zal het bestand compileren en uitvoeren.


Java uitvoeren op Windows (XP, 7, 8 en 10)

Om Java onder de knie te krijgen basisprincipes van programmeren en als u het platform op Windows draait, heeft u een JAVA SE Development Kit (JDK) en een IDE nodig voor het ontwikkelen van projecten. Volgen stap voor stap instructies hieronder gegeven:

Java installeren

  1. Klik in het gedeelte Java SE Development Kit bovenaan de tabel op 'Licentieovereenkomst accepteren' (" Accepteer de licentieovereenkomst"). Klik dan op Windows-link(x64) als u een 64-bits besturingssysteem heeft of Windows (x86) als u een 32-bits besturingssysteem heeft.

  1. Voer na het downloaden het installatiebestand uit en volg de instructies die op het scherm verschijnen. Klik op " Volgende" Selecteer alle functies door op " te drukken Deze functie wordt op de lokale harde schijf geïnstalleerd" en kopieer de installatielocatie ( het is geel gemarkeerd) in Kladblok en klik vervolgens opnieuw Volgende».


  1. Tijdens het installatieproces wordt u gevraagd de JRE te installeren. Klik op "Volgende" en vervolgens op "Voltooien" om de installatie te voltooien.
  2. Nu moet u de PATH-variabele bewerken. Ga naar Configuratiescherm > Systeem en beveiliging > Systeem. Selecteer in het linkerdeelvenster " Aanvullende systeemparameters".

  1. Klik op " Omgevingsvariabelen". In de sectie " Systeemvariabelen" Zoek de PATH-variabele en klik in het volgende venster op "Bewerken".

  1. Selecteer alle tekst in de " Variabele waarde" en kopieer het naar een apart tekstbestand. Dit maakt het gemakkelijker om te bewerken en op fouten te controleren. Kijk of de gekopieerde tekst de regel bevat: C: ProgramData Oracle Java javapath; . Zo ja, dan kunt u doorgaan naar de volgende stap. Als dit niet het geval is, plak dan de installatielocatie die u eerder hebt gekopieerd aan het begin van de variabele en voeg bin toe aan het einde van de regel, zoals dit: C: Program Files (x 86) Java jdk 1.8.0_112 bin ;


  1. Klik op " Houd er rekening mee dat uw JDK-versie (jdk 1.8.0_112) mogelijk anders is. Kopieer de waarde van de variabele en plak deze in het PATH-vak. OK
  2. " om uw wijzigingen op te slaan. Om te controleren of het platform correct is geïnstalleerd introductie tot programmeren Java, geopend opdrachtregel door cmd in de regel te typen Windows-zoekopdracht of via het commando "Uitvoeren..." ( Ramen - R Help-pagina van Oracle.

IntelliJ IDEA installeren

  1. Ga naar ). Voer de opdracht Java -version in. Als de huidige versie van Java wordt weergegeven, is de installatie geslaagd. Zo niet, neem dan contact op met.
  2. IntelliJ IDEA-downloadpagina


  1. Download de gratis Community-editie door op "Downloaden" te klikken.


  1. Eenmaal gedownload, voert u het installatiebestand uit en volgt u de instructies die op het scherm verschijnen. Maak vervolgens een snelkoppeling op het bureaublad voor de 64-bits versie en voeg koppelingen toe met de .java-extensie. Klik op "Volgende" en ga verder met de installatie.
  2. Na installatie opent u IntelliJ IDEA door op het bureaubladpictogram te klikken. Importeer geen instellingen Selecteer 'Instellingen niet importeren' ("
  3. ") en klik op "OK". Hierna accepteren wij het privacybeleid van Jetbrains door op “Accepteren” te klikken.
  4. Nu kunt u de interface voor uzelf aanpassen. U kunt deze stap ook overslaan en alles op de standaard laten staan ​​door op de knop “Alles overslaan en standaardinstellingen instellen” te klikken. Maak een nieuw project»).


  1. In het volgende venster selecteert u "Java" in het linkerdeelvenster en klikt u op "Nieuw" bovenaan het programmavenster om JDK te selecteren. Hier moet u de locatie selecteren waar u de JDK hebt geïnstalleerd tijdens de Java-installatie en vervolgens op “Volgende” klikken.
  2. IntelliJ IDEA zal de JDK vinden en herkennen. Het is niet nodig om andere opties aan te vinken, klik gewoon op “Volgende”.
  3. Op volgende scherm Voer de projectnaam in: HelloWorld en klik op "Voltooien". Als het programma zegt dat de map niet bestaat, klikt u op OK. Als u het linkerdeelvenster niet ziet, gaat u naar Weergaven > Gereedschapsvensters > Project.
  4. Om de klassenaam in te stellen, selecteert u de src-map in het linkerdeelvenster. Klik er met de rechtermuisknop op, ga naar Nieuw > Java en stel de klassenaam in. De klassenaam mag geen spaties bevatten.


  1. Schrijf de code en sla het Java-project op programmeer les.
  2. Om het programma uit te voeren, ga naar het menu Uitvoeren > Uitvoeren... Klik op HelloWorld - het programma zal het bestand compileren en uitvoeren.


Je eerste Java-programma

Gebruik het programma om gebruikers kennis te laten maken met een nieuwe programmeertaal Hallo wereld("Hallo wereld!"). Dit is een eenvoudig programma dat de woorden Hallo, wereld! In dit onderdeel leren we je schrijven dit programma in Java met IntelliJ IDEA.

  1. Open IntelliJ IDEA.
  2. Ga naar Bestand > Nieuw > Project… > Java ( in de linkernavigatiebalk).
  3. Stel de projectnaam in van cursus programmeren Ja va. We noemen het Hello World en klikken op Voltooien.
  4. Nu moeten we een nieuwe Java-klasse maken.
  5. Selecteer de src-map in het linkerdeelvenster, ga vervolgens naar Bestand > Nieuw > Java-klasse en noem de nieuwe klasse HelloWorld.
  6. Kopieer de volgende code naar het bestand HelloWorld.java en sla deze op.

public class HelloWorld ( public static void main(String args) (


//print "Hallo, wereld!"


System.out.println("Hallo wereld!");

  1. Klik op de startknop ( Loop). Als alles in orde is, zie je Hello, World!

Hoe Java leren?

Officiële Java-documentatie

Oracle, het bedrijf dat Java bezit, publiceert kwaliteitstutorials. De officiële documentatie omvat alle Java-functies en wordt regelmatig bijgewerkt.

Let op: het enige negatieve punt is dat de officiële Java-documentatie niet altijd in de eenvoudigste taal is geschreven.

Als je echt wilt leren programmeren in Java, koop het goed boek. Natuurlijk kunnen 1000 pagina's niet op één dag worden gelezen. Maar een goede tutorial zal je helpen programmeren te leren.

Java: Volledige gids(10e editie)

Een geweldig boek voor degenen die net beginnen met het leren van Java. De nieuwste editie bevat alle functies van de Java 8-release.

Het boek beschrijft alles wat je moet weten over programmeren in Java, inclusief syntaxis, trefwoorden en programmeerbasisprincipes, plus de Java API-bibliotheek, Java-applets en meer.

Java-filosofie (4e editie)

Als u vanuit een andere programmeertaal naar Java overstapt, is dit boek iets voor u. Als je helemaal opnieuw begint, kun je het het beste samen met de ander lezen.

Java 8. Zakgids: Eerste hulp voor Java-programmeurs

Dit boek bevat duidelijke antwoorden op vragen die rijzen bij het lesgeven aan J ava-programmering vanaf het begin. Het behandelt kort alle basis-Java-concepten (inclusief Java 9). Geen zin om honderden pagina's door te bladeren op zoek naar de juiste regel? Koop dit boek.

In plaats van een conclusie

Als je Java begint te leren, kan het niet fout gaan: het is een veelbelovende programmeertaal, vol met een grote verscheidenheid aan mogelijkheden.

Voordat u Java gaat leren, volgen hier enkele tips:

  • Lees geen educatieve artikelen en voorbeelden zoals een roman. De enige manier om een ​​goede programmeur te worden, is door veel code te schrijven.
  • Als u uit een andere programmeertaal komt (bijvoorbeeld C#), hoeft u geen code in de C#-stijl te schrijven.
  • Vind Java-gemeenschappen online. Als je eenmaal hebt geleerd hoe je eenvoudige programma's in Java schrijft, ga dan op zoek naar populaire sites en forums die aan Java zijn gewijd. Probeer problemen op te lossen die andere programmeurs hebben. Dit is een geweldige manier om je eigen kennis uit te breiden. Bovendien weet u waar u om hulp kunt vragen als u vastloopt.

We hopen dat dit artikel je zal aanmoedigen om Java te leren en je zal helpen aan de slag te gaan met je eerste programma's.

Vertaling van het artikel “ Leer Java-programmeren. De definitieve gids” werd voorbereid door het vriendelijke projectteam

We zullen het hebben over de basis-Java-syntaxis voor beginners. De syntaxis van een programmeertaal is een reeks regels die bepalen hoe...

Uw goede werk indienen bij de kennisbank is eenvoudig. Gebruik onderstaand formulier

goed werk naar de site">

Studenten, promovendi en jonge wetenschappers die de kennisbasis gebruiken in hun studie en werk zullen je zeer dankbaar zijn.

Geplaatst op http://www.allbest.ru/

Technische Staatsuniversiteit van Nizjni Novgorod

Instituut voor radio-elektronica en informatietechnologieën

Afdeling Informatica en Controlesystemen

Methoden en middelen om computerinformatie te beschermen

"Java-beveiligingssysteem"

Nizjni Novgorod, 2007

1. Hoe Java werkt

2. Java-applets beschermen

3. Beveiligingsmodel JDK1.2

4. Cryptografische Java-architectuur

5. Objectorganisatie van beveiligingsmechanismen

Lijst met gebruikte literatuur

1. WerkingsprincipeJava

Java-technologie is gebaseerd op een client-server-model en een Java-programma bestaat uit verschillende blokken, die elk een specifiek deel van de totale taak uitvoeren. Aan de clientzijde zijn alleen de blokken aanwezig die op dat moment nodig zijn. Bovendien worden de meest gebruikte blokken opgeslagen in een cache op de harde schijf of in het RAM-geheugen van de computer van de gebruiker. Omdat het blok vanaf de server wordt geladen, kan een dergelijk systeem vanaf de server, dus centraal, worden beheerd. Dit zorgt er ook voor dat de gebruiker altijd de nieuwste versie van het programma gebruikt.

Het belangrijkste onderdeel van deze technologie is de virtuele Java-processor, een omgeving voor het uitvoeren van Java-opdrachten, oftewel zogenaamde bytecodes. Elk Java-programma moet voldoen aan de Java Virtual Processor-specificatie, die de Java-instructieset, de typen gegevens die door de Java-processor worden verwerkt, en de registers ervan volledig definieert.

Naast de virtuele processor omvat de Java-technologie (als optioneel element) een objectgeoriënteerde programmeertaal gebaseerd op de C++-taal, waaraan nieuwe mechanismen zijn toegevoegd om de veiligheid te garanderen en gedistribueerd computergebruik.

Een speciaal kenmerk van Java zijn applets. Een applet is een klein programma waarin verschillende vereiste functies moeten worden gedefinieerd. De applet wordt via het netwerk gedownload en kan worden uitgevoerd in een webbrowser die de Java-taal ondersteunt. Het is dit onderdeel van de Java-technologie dat bedoeld is voor gebruik over de hele wereld. Internetnetwerken, en daarom moet de bescherming zich zowel uitstrekken tot de applet zelf als tot de netwerkclient die de applet gebruikt.

2. BeschermingJava-applets

Het meest kwetsbare onderdeel van Java-technologie vanuit veiligheidsoogpunt zijn applets, aangezien deze door elke client kunnen worden gebruikt. Daarom worden de strengste beschermingsmethoden voor applets geboden. Hoewel verschillende browsers en appletviewers verschillende manieren kunnen hebben om gebruikersinformatie tegen aanvallen te beschermen, zou een applet in het algemeen verboden moeten zijn voor het volgende:

· controleer het bestaan ​​en de parameters van een specifiek bestand;

· toegang krijgen tot een externe computer via het netwerk;

· een lijst ontvangen met netwerkcommunicatiesessies die de lokale computer met andere computers tot stand brengt;

· informatie verkrijgen over de gebruiker of zijn thuismap;

verlaat de Java-interpreter;

Deze regels worden geleverd door de volgende componenten van Java-technologie.

· De feitelijke Java virtuele processor, die voortdurend de status ervan controleert.

· Applet- en Java-programmalader die gedownloade codes beheert.

· Security Manager (SecurityManager), dat gevaarlijke acties van applets controleert en blokkeert.

De klasse SecurityManager vermeldt methoden die door het systeem worden gebruikt om de acties van de applet te controleren, afhankelijk van de kenmerken van de omgeving

De functie van de lader is het verifiëren van bytecodes, dat wil zeggen het controleren van de juistheid van het ontvangen Java-programma-element en de integriteit ervan. Tijdens het verificatieproces wordt het volgende onthuld:

· komt de versie van het ontvangen blok overeen met de versies van andere elementen van het systeem;

· of het programma voldoet aan de specificatie van een bepaalde virtuele Java-processor;

Het doel van deze controle is het identificeren van onjuist gebruik van indirecte adressering dat zou kunnen leiden tot verstoring van de virtuele processor, en het verifiëren van de integriteit van de applet.

De beschermingsmechanismen van deze technologie zijn zeer goed doordacht, maar de implementatie ervan is nog verre van perfect. Daarom vindt u hieronder een kleine lijst met mogelijke “aanvallen”.

Serviceblokkering

Als gevolg hiervan wordt het werk van de gebruiker gedeeltelijk of volledig geblokkeerd en kan de browser zelfs worden uitgeschakeld. Verre van dat volledige lijst mogelijke opties voor een dergelijke “aanval”:

· al het vrije geheugen vullen;

· vastleggen van belangrijke systeemklassen.

"Geheime" kanalen

Via deze kanalen kunt u zelfs via beveiligingssystemen (firewalls) informatie ontvangen. Het bestaan ​​van "geheime" kanalen in de browser maakt het erg gevaarlijk. Je kunt het gebruiken als een "geheim" kanaal volgende stappen applets:

· het verzenden van e-mail via de SMTP-poort van de server (en e-mail wordt verzonden namens de gebruiker die met de applet werkt);

· een zoekopdracht voor een niet-bestaande URL, waarin de gegevens die nodig zijn voor de “cracker” als parameters worden doorgegeven;

· een poging om toegang te krijgen tot een niet-bestaand adres (de reeks mappen kan de benodigde gegevens bevatten).

Informatie bekend bij applets

Met behulp van deze informatie kunt u bepaalde informatie verkrijgen die later kan worden gebruikt voor ‘hacken’. Deze informatie kan zelfs via firewalls worden verzonden met behulp van de hierboven beschreven geheime kanalen. Applets kennen doorgaans het volgende: systeeminformatie:

· systeemtijd;

· naam en versie van het besturingssysteem;

· processorarchitectuur.

Het vinden van een evenwicht tussen de mogelijkheden van downloadbare applets en de bescherming van het clientsysteem is behoorlijk moeilijk. De voorgestelde oplossingen kunnen niet onafhankelijk worden gemaakt van een specifiek platform, wat in tegenspraak is met de eis van absolute portabiliteit van Java-programma's.

3. BeveiligingsmodelJDK1.2

Java-technologie biedt een aantal beschermende barrières, die in drie groepen kunnen worden onderverdeeld:

· betrouwbaarheid van de taal;

· controle bij het ontvangen en laden van programma's;

· controle tijdens de uitvoering van het programma.

Java biedt beveiliging via statische en dynamische bedieningselementen. Nog een Java-- automatische controle geheugen, waardoor de verschijning van "bungelende" wijzers wordt geëlimineerd.

Controle bij het ontvangen en laden van programma's in Java bestaat uit meerdere fasen. Ten eerste, softwarecomponenten kunnen worden voorzien van een elektronische handtekening, waarmee u de integriteit en authenticiteit ervan kunt controleren. Ten tweede, de bytecodeverificator, behalve algemene controle formaat van de ontvangen informatie, probeert ervoor te zorgen dat de volgende onjuiste acties niet plaatsvinden:

· pointervervalsing (bijvoorbeeld het verkrijgen van een pointer als resultaat van een rekenkundige bewerking);

· schending van toegangsrechten tot klassecomponenten;

· objectmethoden aanroepen met een ongeldige set parameters;

· ongeldige typeconversie;

Stapeloverloop of uitputting.

De controle tijdens de programma-uitvoering kan in twee niveaus worden verdeeld. Op het lagere niveau staat de virtuele Java-machine geen array-overruns of soortgelijke onjuiste acties toe. Op het hoogste niveau voert de beveiligingsmanager zinvolle toegangscontroles uit en implementeert daarmee het geselecteerde beveiligingsbeleid.

Als we de indeling in groepen en niveaus voortzetten, is het nuttig om de volgende twee aspecten van Java-beveiliging te benadrukken:

· bescherming van de Java-runtimeomgeving en hardware- en softwareplatformbronnen tegen kwaadaardige software;

· beperking van de toegang van proefpersonen tot bronnen op applicatieniveau.

Het belangrijkste doel van beveiligingsmaatregelen in Java is het beschermen van de Java-omgeving tegen malware. Om dit doel te bereiken werd het sandbox-concept voorgesteld ( zandbak) is een gesloten omgeving waarin potentieel onbetrouwbare programma's worden uitgevoerd. Deze werden beschouwd als applets die via het netwerk werden ontvangen. Alle "native" code (dat wil zeggen programma's die zich op lokale computer) werd als absoluut betrouwbaar beschouwd en had toegang tot alles wat beschikbaar was voor de virtuele Java-machine.

Sandboxbeperkingen omvatten het verbieden van toegang tot het lokale bestandssysteem, netwerken met alle hosts behalve de appletbron (de host waarvan de applet is ontvangen), enz. Met dergelijke beperkingen is de veiligheid over het algemeen gewaarborgd, maar kunnen applets vrijwel niet werken.

Om dit probleem op de een of andere manier aan te pakken, introduceerden ze het concept van een elektronische handtekening, die werd geplaatst door de distributeur van de applet. De Java-machine verdeelt, in overeenstemming met zijn beveiligingsbeleid, distributeurs en dienovereenkomstig hun applets in twee categorieën: vertrouwd en niet-vertrouwd. Betrouwbare applets kregen dezelfde rechten als native code.

Er kwamen drie hoofdconcepten naar voren:

· bron van het programma;

· recht en veel rechten;

· veiligheidsbeleid.

De bron van een programma wordt geïdentificeerd door een paar (uniforme bronlocator - URL, programmadistributeurs). De URL kan verwijzen naar een bestand op het lokale bestandssysteem of naar een bron op een extern systeem.

Een recht is een abstract concept waarachter, zoals gebruikelijk op Java, klassen en objecten schuilgaan. In de meeste gevallen wordt het recht bepaald door twee tekenreeksen: de bronnaam en de actie. Een bestand kan bijvoorbeeld een bron zijn en een leesactie kan een actie zijn.

Het beveiligingsbeleid specificeert de overeenkomst tussen de bron en de rechten van programma's die ervan worden ontvangen. "Native" programma's hebben geen beveiligingsrechten en het beleid ten aanzien daarvan kan van alles zijn.

In wezen bestaat er een traditioneel toegangsrechtenmechanisme voor moderne besturingssystemen en databasebeheersystemen met de volgende kenmerken:

· Het onderwerp van toegang is niet de gebruiker, maar de bron van het programma. Formeel kunnen we er echter van uitgaan dat tijdens de uitvoering van het programma de bron ervan wordt;

· Er bestaat geen concept van een eigenaar van een hulpmiddel die (de eigenaar) de rechten zou kunnen wijzigen; deze laatste worden uitsluitend bepaald door het veiligheidsbeleid.

Beveiligingsmodel in JDK 1.2

4. Cryptografische architectuurJava

Zonder cryptografie zijn betrouwbare authenticatie, integriteitscontrole en vertrouwelijkheid onmogelijk.

De Java Cryptography Architecture (JCA) is ontworpen om dit te bieden de volgende diensten:

· instellen/verifiëren van een elektronische handtekening;

· berekening van de hashfunctie;

· genereren van publieke/geheime sleutelparen;

· creatie van certificaten die de authenticiteit van publieke sleutels bevestigen;

· opslag van sleutels, evenals certificaten van vertrouwde partners;

· Sleutels omzetten van een representatie met een verborgen structuur naar een algemeen begrepen representatie en vice versa;

· genereren van parameters van cryptografische algoritmen;

· genereren van (pseudo)willekeurige getallen;

· symmetrische encryptie;

· ontwikkeling van gemeenschappelijk sleutelmateriaal.

Daarnaast moet de cryptografische architectuur voldoen aan de volgende technologische eisen:

· de onafhankelijkheid van algoritmen en hun implementaties garanderen;

· zorgen voor onderlinge compatibiliteit van implementaties;

· zorgen voor uitbreidbaarheid van de reeks algoritmen en hun implementaties.

Elke dienst kan worden geleverd door verschillende algoritmen, die elk op hun beurt verschillende implementaties kunnen hebben. De MD5/SHA-1-algoritmen (evenals de Russische GOST “Hash Function”) zijn bijvoorbeeld bedoeld voor het berekenen van de hash-functie; de ​​RSA/DSA-algoritmen en de Russische GOST “Procedures voor de ontwikkeling en verificatie van elektronische digitale handtekeningen ” worden gebruikt voor het genereren en verifiëren van een elektronische handtekening enz.

De software-interface van services is ontworpen om hun functionaliteit in een algoritme-onafhankelijke vorm weer te geven. Om naar implementaties te verwijzen wordt het concept van een cryptografische dienstverlener gebruikt: een pakket of groep pakketten die een implementatie bevatten. De applicatie heeft de mogelijkheid om uit de beschikbare algoritmen en serviceproviders te selecteren.

De laatste twee items in de lijst met services (symmetrische encryptie en het genereren van gemeenschappelijk sleutelmateriaal) zijn onderworpen aan Amerikaanse exportbeperkingen, dus zijn ze, in tegenstelling tot de andere genoemde services, verpakt als een extensie (Java Cryptography Extension, JCE), die een apart produkt.

Hiërarchie van cryptografische diensten, algoritmen en implementaties

5. Objectorganisatieautomatisering van beveiligingsmechanismen

cryptografische beveiliging van java-applet

De beveiligingsmechanismen in JDK 1.2 zijn verpakt in vier kernpakketten en drie uitbreidingspakketten. Hier zijn er enkele

· java.security-- bevat de interfaces en klassen die het raamwerk van beveiligingsmechanismen vormen. Dit omvat de hierboven besproken toegangscontroletools, maar ook cryptografische tools, zoals het genereren van een elektronische handtekening, het berekenen van een hashfunctie, enz.

· java.security.interfaces- middelen voor het genereren van RSA- en DSA-sleutels.

· javax.crypto-- interface en klassen voor symmetrische codering.

De conceptueel meest belangrijke interfaces en klassen zijn geconcentreerd in het pakket java.security.

Beveiligingsbeleid

Het beveiligingsbeleid brengt een correspondentie tot stand tussen programmabronnen en hun toegangsrechten. In een Java-machine wordt deze op elk moment weergegeven door één object van een klasse die een opvolger is van een abstracte klasse Beleid. Klasse methoden Beleid Hiermee kunt u het huidige beleid ophalen/instellen, en de toegangsrechten achterhalen die aan een bepaalde programmabron zijn gekoppeld.

Toegangsrechten controleren

Om de toegangsrechten te beheren, kunt u twee hulpmiddelen gebruiken:

· ingebouwde beveiligingsmanager, genoemd Toegangscontroller;

· dynamisch veranderende beveiligingsmanager -- Beveiligingsmanager.

Klas Toegangscontroller biedt één enkele methode om een ​​bepaald recht in de huidige context te controleren -- checkToestemming.

Cryptografische interfaces en klassen

De objectorganisatie van het cryptografische subsysteem van Java weerspiegelt uiteraard het hierboven beschreven cryptografische subsysteem. Elke service heeft een abstracte klasse die deze beschrijft (de service) software-interface, evenals een klasse die de programmeerinterface van de serviceprovider beschrijft. Klassen zijn belangrijk Aanbieder En Beveiliging. De eerste bevat algemene methoden van cryptografische dienstverleners, de tweede bevat methoden voor het beheren van providers en algoritmeparameters.

Lijst met gebruikte literatuur

1. http://www.jetinfo.ru/1998/11-12/1/article1.11-12.19981237.html

2. http://vestnik.sci.pfu.edu.ru/archiv-cs/articles-cs/2004-3-1/pdf/kulyabov-2004.pdf

3. http://ru.wikipedia.org/wiki/Java

4. http://infocity.kiev.ua/hack/content/hack081.phtml

5. http://citforum.uar.net/security/web/java_seq.shtml

6. http://www.htc-cs.ru/press/tribune/java.html

7. http://www.ccc.ru/magazine/depot/00_11/print.html?web3.htm

Geplaatst op Allbest.ru

Soortgelijke documenten

    Java en Java RMI-architectuur, hun belangrijkste eigenschappen, basissysteem en elementen. Beveiliging en de Java Virtual Machine. Java API-interface. Een voorbeeld van het gebruik van de RMI-applicatie. Werken met het programma "Calculator". Veelzijdigheid, draagbaarheid van platforms.

    cursuswerk, toegevoegd op 12/03/2013

    Conceptueel en functioneel Java-functies Kaart als een versie van het Java-platform voor apparaten met extreem beperkte computerbronnen, beoordeling van de mogelijkheden en vereiste bronnen. Analyse van het beveiligingsniveau van het platform, interactie van componenten.

    presentatie, toegevoegd 19-05-2014

    Netwerkmogelijkheden van programmeertalen. Voordelen van het gebruik van Java-applets. Klassen opgenomen in de java.awt-bibliotheek. Creatie gebruikersinterface. Socketverbinding met de server. Grafisch in Java. Waarden van kleurcomponenten.

    cursuswerk, toegevoegd op 11/10/2014

    Geschiedenis van de schepping Java-taal. Basisprincipes van objectgeoriënteerd programmeren. Structuur, syntaxiskenmerken en voorbeelden van toepassingsmogelijkheden van het gebruik van de Java-taal, de voordelen ervan. Perspectieven op een baan als Java-programmeur.

    cursuswerk, toegevoegd op 14-12-2012

    De basis van de gebruikersinterface. Kenmerken van de klassen java.awt.geom, java.awt, java.awt.Graphics en java.awt.Graphics2D. Basis grafische primitieven en werken met streams. Programmaoverzicht en samenstelling van affiene transformaties.

    trainingshandleiding, toegevoegd op 30-06-2009

    Architectuur op commandoniveau van Java-platform, bestandsformaat Java-klasse. Een assembler-achtige taalcompiler waarmee u klassebestanden kunt maken die correct worden verwerkt door de echte JVM, en die alle Java-bytecodeopdrachten en de belangrijkste JVM-mogelijkheden ondersteunt.

    cursuswerk, toegevoegd op 17-09-2008

    Kort historische achtergrond ontwikkeling van de Java-taal. Domeinanalyse. Java-platform, enterprise en standaardeditie. Applets, servlets, gui-applicaties. Ontwikkeling programmacode, console-applicatie. De resultaten van de applet, servlet.

    cursuswerk, toegevoegd op 23-12-2015

    Het voordeel van het gebruik van programma's die in Java zijn geschreven, hun vereisten en instellingen op de client-pc. Implementatie en daaropvolgende "automatische" updates van client-GUI-versies met behulp van technologie Java-web Start in Windows-omgeving.

    samenvatting, toegevoegd op 16-05-2011

    Een programmeertaal maken met behulp van de Java-applicatie. Geschiedenis van de Java-naam en het logo. Overzicht van de verscheidenheid aan moderne teksteditors. Tekenreeksverwerking. Methoden in de klasse String. Java: Tekstverwerkingstaken. Programmeervoorbeelden.

    cursuswerk, toegevoegd op 19-07-2014

    Uitbreidbare taal XML-opmaak. Beschrijving van het DTD-documenttype. Belang van XML en het Java-platform. Overzicht van standaard DOM- en SAX-parsers. Java-technologie Servet, Java-server Pagina's (JSP), JavaBeans. Algemene functionaliteit van het softwareproduct. Gegevensmodel.

Dit deel bestaat uit zes delen. De beveiligingsproblemen van gedistribueerd computergebruik in het algemeen worden besproken en het beveiligingsprobleem dat verband houdt met uitvoerbare code wordt besproken. Er worden zes stappen voorgesteld om een ​​werkbaar en flexibel beveiligingsmechanisme op te bouwen. Ook wordt de implementatie van beveiligingsmechanismen in de Java-taalarchitectuur besproken. Zoals bij elke nieuwe technologie zijn er open vragen over de beveiliging van Java, die nog steeds worden besproken op internet en andere forums.

In deze sectie wordt het concept van beveiliging onderzocht in de algemene context van interactie op het web en de implementatie van beveiliging door middel van uitvoerbare code.

Laten we eerst kijken naar de dualiteit van veiligheid met betrekking tot het web en de evolutie van het web als medium in de context van die dualiteit. Vervolgens kunt u het beveiligingsprobleem gaan beschrijven in de context van de uitvoerbare code.

Een programma dat uit het netwerk wordt verkregen, moet een bepaald niveau van vertrouwen wekken bij de gebruiker. Ze krijgt wat computerbronnen, anders kan ze geen nuttige acties uitvoeren. Dit programma is echter geschreven door iemand die geen formele verplichtingen jegens de gebruiker heeft. Als deze persoon een hacker is, kan de resulterende uitvoerbare code een potentieel gevaarlijk programma zijn met dezelfde mogelijkheden als een lokaal programma.

Moet de gebruiker volledig isoleren extern programma van computerbronnen? Natuurlijk niet. In een dergelijk geval zou de uitvoerbare code niets nuttigs kunnen doen. Een completere en effectievere oplossing voor het veiligheidsprobleem kan in zes fasen worden verdeeld:

1. Anticipeer op potentieel gevaarlijke acties en inbraakmethoden.

2. Reduceer eventuele gevaarlijke handelingen tot een minimum aan eenvoudige handelingen.

3. Bouw een programmeeromgeving en computertaal, duidelijk verboden minimale instelling gevaarlijke handelingen, en dus eventuele kwaadwillige handelingen.

4. Bewijs logisch of, indien mogelijk, laat zien dat de taal en de omgeving inderdaad beschermd zijn tegen methoden van opzettelijke inbreuk.

5. Implementeer de taal en sta toe dat uitvoerbare programma's alleen die goedgekeurde veilige taal gebruiken.

Externe aanvalsscenario's kunnen worden onderverdeeld in: de volgende groepen(de lijst is niet compleet):

· Schade aan of schending van de integriteit van gegevens en/of staat van het lopende programma;

· Het verzamelen of kopiëren van vertrouwelijke informatie;

· Blokkeren van bronnen, waardoor deze ontoegankelijk worden voor legitieme gebruikers en programma's;

· Vastlegging van bronnen en hun gebruik door een extern ongeautoriseerd programma;

· Creëren van niet-fatale situaties die de prestaties verminderen, vooral bij uitvoerapparaten;

· Toegangsrechten toewijzen en deze of de computer van de klant gebruiken om andere netwerkelementen binnen te dringen.

In tabel 1.1 somt potentieel kwetsbare hulpbronnen op, evenals de soorten effecten die in verband hiermee kunnen worden gebruikt. Een goede beveiligingsstrategie kent aan elke bron een risicoscore toe en ontwikkelt methoden waarmee externe uitvoerbare programma's toegang kunnen krijgen.

Tabel 1.1 Potentieel kwetsbare objecten en soorten impact

Schending van integriteit

Onderschepping van informatie

Rechten blokkeren/wijzigen

Bronnen vastleggen

Niet-fatale interferentie

Bemachtiging van bevoegdheden

Bestandssysteem

Schending van integriteit

Onderschepping van informatie

Rechten blokkeren/wijzigen

Bronnen vastleggen

Niet-fatale interferentie

Bemachtiging van bevoegdheden

Vertrouwelijke informatie

Centraal

CPU

Uitvoerapparaten

Invoerapparaten

Besturingssysteem, programmastatus

In plaats van alles te bekijken mogelijke manieren interferentie identificeert het beveiligingsschema in de Java-taal de kwetsbare objecten van de belangrijkste potentieel gevaarlijke operaties, wat zeer dicht in de buurt komt van de hierboven beschreven aanpak.

In het bijzonder houdt het Java-taalbeveiligingsprogramma rekening met de volgende kwetsbare objecten:

· Geheugen;

· Besturingssysteem/programmastatus;

· Clientbestandssysteem;

· In dit geval wordt rekening gehouden met de volgende soorten interventies, vermeld in de tabel. 1.1;

· Schending van de integriteit van programma's op de clientmachine. Meestal veroorzaakt door virussen die zichzelf in het geheugen schrijven en bepaalde bestanden vernietigen wanneer er een gebeurtenis plaatsvindt of een bepaalde datum wordt bereikt;

· Blokkeren/wijzigen van rechten om de bronnen van de clientmachine te gebruiken. Meestal veroorzaakt door virussen;

· Onderschepping van informatie op de clientmachine. Dit kan bijvoorbeeld eenvoudig worden gedaan met behulp van de UNIX SENDMAIL-opdracht;

· Het in beslag nemen van de privileges van de clientmachine. Dit wordt bereikt door IP-adressen te vervangen. Dit type computeraanval is uitgevonden door Kevin Mitnick toen hij een van de personal computers van beveiligingsexpert Tsutumo Shimura hackte. Het hele incident wordt gedetailleerd beschreven in het bestverkochte boek Showdown, geschreven voor de New York Times door Sutumo Shimura.

Het eerste beveiligingsniveau in Java is de architectuur van de taal zelf, de syntactische en semantische constructies van de taal. Vervolgens wordt de structuur van de Java-taal besproken vanuit een beveiligingsperspectief.

Java is een volwaardige objectgeoriënteerde taal; elke afzonderlijke datastructuur (en dus daarvan afgeleid) is een echt, volledig functioneel object. Het feit dat elke primitieve datastructuur als een object is ingekaderd, zorgt ervoor dat alle theoretische beveiligingsvoordelen van OOP-talen aanwezig zijn in programma's die in Java zijn geschreven, inclusief hun syntaxis en semantiek:

· Inkapselen en verbergen van gegevens in privéadvertenties;

· Gecontroleerde toegang tot datastructuren, waarbij; er worden alleen publieke methoden gebruikt;

· Uitbreidbaarheid en hiërarchische opbouw van een complexe programmastructuur;

· Geen overbelasting van handelingen.

Klassen en methoden kunnen definitief worden verklaard, waardoor het maken van subklassen en het overschrijven van methoden wordt verboden. Deze verklaring voorkomt kwaadwillige wijziging van geteste code.

Om veiligheidsredenen wordt typecasting zowel statisch als dynamisch gecontroleerd; dit zorgt ervoor dat het type van een object dat tijdens het compileren is gedeclareerd, exact overeenkomt met het type van het object tijdens runtime, zelfs als er typeconversiebewerkingen op dat object zijn uitgevoerd. Typeconversiecontroles voorkomen opzettelijke vervanging van gegevenstypen.

Deze functie, rechtstreeks geïmplementeerd in de Java-taal, is waarschijnlijk de belangrijkste veiligheidsgarantie. De afwezigheid van pointers in een Java-programma zorgt ervoor dat alle data-elementen altijd een naam hebben. Elk eenvoudige structuur gegevens of een stukje code hebben een identificatie waarmee u deze volledig kunt beheren.

Java is een multi-threaded taal en biedt thread-safe toegang tot datastructuren en objecten. Hoofdstuk 14 bespreekt Java-threads in detail en biedt voorbeeldtoepassingsprogramma's.

Aan elk object in de Java-taal is een unieke hashcode gekoppeld. Dit betekent dat de status van een Java-programma op elk moment kan worden gecontroleerd.

Bij het compileren worden alle beveiligingsmechanismen onderzocht die in de syntaxis van de Java-taal bestaan, inclusief het controleren of private en publieke declaraties consistent zijn, of de typen correct zijn en of alle variabelen zijn geïnitialiseerd op vooraf gedefinieerde waarden.

Java-bronklassen worden gecompileerd in bytecodes. De bytecodeverifier voert veel consistentie- en veiligheidscontroles uit op de gecompileerde code. Bij het verifiëren van bytecodes worden de volgende bewerkingen uitgevoerd:

· Controleer op stack-overflow en stack-pointer-underflow;

· Analyse van toegang tot registers;

· Controleren van de juistheid van bytecodeparameters;

· Analyse van bytecodestromen gecreëerd door methoden, wat de integriteit van de stapel garandeert, waarbij ontvangen objecten en objecten worden gecontroleerd die door methoden worden geretourneerd.

Java-klassen worden in pakketten beschreven. Klassenamen worden geassocieerd met pakketnamen. Pakketten zorgen ervoor dat de code die van het netwerk wordt ontvangen, verschilt van de lokale code. Een geaccepteerde klassenbibliotheek kan niet per ongeluk of opzettelijk lokale bibliotheken van vertrouwde klassen vervangen of kapen, zelfs als die bibliotheken dat wel doen dezelfde namen. Dit beschermt ook tegen ongeteste, toevallige interacties tussen de lokale en geaccepteerde klassen.

Late slavernij zorgt ervoor dat de exacte locatie van runtimebronnen op het allerlaatste moment plaatsvindt. Late binding vormt een aanzienlijke barrière voor externe aanvallen vanwege speciale conventies met betrekking tot geheugentoewijzing voor deze bronnen.

Standaard wordt het Java-ioiaccoB hotloading-mechanisme gebruikt om de opgegeven klasse op te halen uit een bestand dat zich op de lokale hostmachine bevindt.

Alle andere methoden voor het laden van klassen, inclusief overdracht via het netwerk, vereisen de aanwezigheid van een geschikte ClassLoader-klasse. ClassLoader is een subklasse van de standaard Java ClassLoader-klasse, die methoden heeft die alle consistentie- en beveiligingsmechanismen implementeren en die voor elke nieuw geladen klasse worden uitgevoerd.

Om veiligheidsredenen kan de klasse ClassLoader geen vooruitkijkacties uitvoeren op bytecodes. Bytecodes kunnen worden verkregen uit een Java-programma dat is vertaald door een Java-compiler of een C++-compiler die is aangepast om bytecodes te produceren. Dit betekent dat de ClassLoader pas wordt uitgevoerd nadat de binnenkomende bytecode is geverifieerd; deze klasse is verantwoordelijk voor het creëren van een naamruimte voor de geladen code en het oplossen van klassenaamreferenties die in de resulterende code worden geadresseerd. Hierdoor worden voor elk pakket afzonderlijke naamruimten gemaakt.

In C en C++ wijst de programmeur expliciet geheugen toe, maakt het vrij en houdt alle verwijzingen naar het toegewezen geheugen bij. Dit bemoeilijkt vaak het onderhoud van programma's en is een belangrijke bron van fouten die leiden tot bungelende verwijzingen, veroorzaakt door het gebruik van nulaanwijzers en onjuiste geheugentoewijzings- en delocatiebewerkingen.

Java heeft geen pointers, dus de programmeur hoeft het geheugen niet expliciet te beheren. Geheugentoewijzing en ongedaan maken van de toewijzing worden automatisch, op een gestructureerde manier en met nauwkeurige typeconsistentie uitgevoerd. Om ongebruikt geheugen vrij te maken, wordt garbage collection (geheugendefragmentatie) gebruikt in plaats van expliciete programmeerbare bewerkingen. Dit elimineert de mogelijkheid van geheugentoewijzingsfouten en potentiële beveiligingsproblemen. Bij het handmatig toewijzen en vrijmaken van geheugen zijn illegale duplicatie-, klonen- en inbeslagnames van beschikbare objecten mogelijk, evenals schending van de gegevensintegriteit.

De klasse SecurityManager is een eenvoudig, uitbreidbaar middel voor het bouwen van beveiligingssystemen en het bieden van beschermingsmechanismen voor andere componenten van de Java-taal, inclusief klassenbibliotheken en externe omgevingen (bijvoorbeeld Java-compatibele browsers en machine-afhankelijke methoden). De klasse SecurityManager zelf is niet bedoeld om rechtstreeks te worden gebruikt (standaard veroorzaakt elk van de controles een soort beveiligingsuitzondering); dit is een basisklasse voor het maken van subklassen die een gegeven reeks beveiligingsmethoden implementeren.

De klasse SecurityManager beschikt onder meer over methoden voor het herkennen van beveiligingscontroleprocessen, evenals methoden voor het uitvoeren van de volgende controles:

· Bescherming tegen installatie van extra klasseladers ClassLoader;

· Mogelijkheid om dynamische bibliotheken te koppelen (gebruikt voor machine-afhankelijke code);

· Lezen vanuit een klassenbestand en schrijven naar een klassenbestand;

· Het creëren van een netwerkverbinding;

· Mogelijkheid om met sommigen in contact te komen netwerk poort;

· Inkomende netwerkverbinding toestaan;

· Beschikbaarheid van een pakket;

· Een nieuwe klasse aan het pakket toevoegen.

De belangrijkste bron van gevaar voor Java-nporpaMM is Java-code die afkomstig is van het netwerk en op de clientcomputer draait. Dergelijke transporteerbare Java-nporpaMMbi worden applets genoemd. Een Java-applet heeft een goed gedefinieerde reeks mogelijkheden en beperkingen op taalniveau, vooral op het gebied van beveiligingsmechanismen.

Voor applets die via het netwerk worden gedownload, gelden de volgende beperkingen:

· U kunt geen bestanden en mappen maken, hernoemen of kopiëren op het lokale bestandssysteem;

· Je kunt niet willekeurig creëren netwerkverbindingen, met uitzondering van verbindingen met de hostmachine waarvan de applets zijn gelezen. De hostnaam moet worden opgegeven in de URL van de HTML-pagina die de tag bevatte , of opgegeven in de codebase-parameter van de tag . Een numeriek IP-adres van de hostmachine is niet toegestaan.

De vermelde strikte beperkingen op toegang tot het lokale bestandssysteem zijn van toepassing op applets die worden uitgevoerd in de Netscape Navigator 3.0-browseromgeving. In de JDK 1.0 Appletviewer zijn de beperkingen minder beperkend en kan de gebruiker expliciet een lijst met bestanden definiëren waarmee applets kunnen werken.

Applets kunnen bepaalde systeemeigenschappen lezen door system.getProperty(string key) aan te roepen. Applets in Netscape 3.0 hebben onbeperkte toegang tot deze eigenschappen. Met de JDK 1.0 Appletviewer van Sun kunt u de toegang tot elke woning individueel beheren. In tabel 1.2 vermeldt de informatie waarvoor wordt geretourneerd verschillende betekenissen sleutel

Java-interface applicatieprogramma

Tabel 1.2 Beschikbaarheid van systeemvariabelen

In tabel Tabel 1.3 geeft een overzicht van opties die niet beschikbaar zijn voor applets in de Netscape 3.0-browseromgeving. Met de JDK 1.0 Appletviewer en HotJava-browser kan de gebruiker de toegang tot enkele van de opgegeven bronnen controleren.

Tabel 1.3 Systeemvariabelen zijn niet beschikbaar voor applets

Het Java-systeem laadt applets op twee manieren. De applet kan via het netwerk worden overgedragen of worden gedownload van het lokale bestandssysteem. De manier waarop de applet wordt geladen, bepaalt welke mogelijkheden deze biedt.

Vanuit veiligheidsoogpunt mogen lokale applets het volgende doen:

· Bibliotheken op de clientcomputer laden;

· Voer externe processen uit op de lokale machine;

· Stop de werking van de virtuele Java-machine.




2024, leally.ru - Uw gids in de wereld van computers en internet