Sicherheit Programmiersprache

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
yks
Mitglied
Beiträge: 1291
Registriert: 10.07.2004 02:31

Sicherheit Programmiersprache

Beitrag von yks »

Hallo,

mich interessieren eure Meinungen zu folgendem Thema: php vs. java und javascript.
Hintergrund: Eine Behauptung, php sei nicht so sicher, java/javascript (mit j/j abkürze) angeblich sicherer.
Meine Laien-Gedanken dazu (nummeriert nur für eine bessere Beantwortung):
  1. Java und Javascript sind für mich verschiedene Programmiersprachen, ob und wie sie miteinander verbandelt sind, weiß ich nicht.
  2. In Erinnerung habe ich zB "serverseitige Ausführung" und "browserseitige Ausführung"
    Ich bin mir nicht sicher, ob es hier zutrifft, php kenne ich als serverseitig, java/javascript hätte ich evtl als browserseitig verstanden. Richtig ?
  3. Java muss man zB auf dem PC installiert haben, um zB in einen Java-Chat zu kommen.
    Dh ein Teil wird erst bei mir ausgeführt *denk*
  4. Kann mich erinnern, dass es früher auch eher mal Thema bzgl Sicherheit war, ob man Java (und damit wohl auch javascript ?) aktiviert oder nicht.
  5. Die Frage ist auch, für welche "Dinge" welche Sprache geeignet ist. Denke mal, da gibt es auch Unterschiede.
    Ich könnte aber nun auch nicht konkret sagen, php ist eher für dies und j/j eher für jenes.
  6. Verbreitung
    Es gibt sehr viele Plattformen, die auf php-Basis sind. Warum ?
    Und ich habe ein Beispiel einer Banksoftware zwecks Buchen, Konten, Mitglieder usw, die j/j basiert ist ?
    Weil j/j wirklich sicherer ist ?
    Falls es so wäre, warum dann nicht auch soziale Plattformen auf j/j, wo es ebenfalls um Datenschutz geht.
    Ich kenne aber auch keine Bankensoftwares und weiß nicht, womit die meisten programmiert sind.
    Und ob es einen Unterschied gibt hinsichtlich der kommerziellen Nutzung, könnte ich auch nicht sagen.
  7. Fehlerquote bei php und j/j ?
    Ich weiß nun nicht, wie oft in einem gleichen Zeitraum eine neue php-Version und eine neue java-Version zustande kommt.
    Kann mich nur an früher erinnern, wo man sich auch öfters mal darum kümmern musste, eine neue java-Version zu installieren. Läuft heute wohl im Hintergrund ab.
    Anfänger oder Hobby-Programmierer gibt es bei php genauso wie bei j/j und hat mit der Sprache nichts zu tun.
  8. vergessen *grmpf*
Ich persönlich habe nicht das Gefühl, dass php eine unsicherere Programmiersprache ist.
Aber warum nicht mal nachfragen...
Mich würden die Unterschiede interessieren.

Würde mich über erleuchtende Antworten freuen :)
Aber bitte nicht im Fachchinesisch, bin keine Programmiererin ;)

Viele Grüße
yks
Mit subsilver2 macht es noch viel mehr Spaß ! :)
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: Sicherheit Programmiersprache

Beitrag von Mahony »

Hallo
yks hat geschrieben:Java und Javascript sind für mich verschiedene Programmiersprachen, ob und wie sie miteinander verbandelt sind, weiß ich nicht.
zu 1. Java ist nicht gleich Javascript!
Die wichtigsten Unterschiede zwischen Java und JavaScript:

Java ist eine OOP-Programmiersprache,
während JavaScript eine OOP-Skriptingsprache ist.
Java erstellt Anwendungen, die auf einem virtuellen Rechner oder Browser ausgeführt werden,
während JavaScript-Code nur auf einem Browser ausgeführt wird.
Java-Code muss kompiliert werden,
während JavaScript-Code im Text integriert ist.
Sie erfordern unterschiedliche Plug-ins.

zu 2. PHP wird Serverseitig ausgeführt ansonsten siehe Punkt 1.

zu 3. Damit Java-Programme starten können, muss das Java Runtime Environment auf dem Computer installiert sein.

zu 4. Wie gesagt, nicht alles in einen Topf werfen -> Java ist NICHT Javascript!

zu 5.
yks hat geschrieben:Die Frage ist auch, für welche "Dinge" welche Sprache geeignet ist. Denke mal, da gibt es auch Unterschiede.
Ja die gibt es. Ich möchte aber jetzt und hier nun keine Abhandlung über Programmiersprachen und Skriptingsprachen halten.

zu 6.
yks hat geschrieben:Es gibt sehr viele Plattformen, die auf php-Basis sind. Warum ?
Weil die Programmiersprache PHP sehr beliebt ist und relativ einfach zu erlernen ist.
yks hat geschrieben:Und ich habe ein Beispiel einer Banksoftware zwecks Buchen, Konten, Mitglieder usw, die j/j basiert ist ?
Weil j/j wirklich sicherer ist ?
Die Software wird wohl auf Java basieren, aber nicht unbedingt weil Java sicherer wäre sondern eher weil der Hersteller das so wollte.

zu 7. Es gibt in jeder Software Fehler und dementsprechend auch Patches dafür. Die Anzahl/Häufigkeit der Patches sagt aber absolut nichts über die tatsächliche Sicherheit aus.
Beispiel: Firma A (wir nennen sie mal PHP) bringt jeden Monat einen Patch heraus.
Firma B (wir nennen sie mal Java) bringt jeden Monat zehn Patches heraus.

Frage: Welche Firma (Software) ist sicherer?
Antwort: Das lässt sich ohne weiteres Hintergrundwissen nicht ermitteln, denn:
Evtl, ist PHP ja von Hause aus sicherer und erfordert deshalb nur einen Patch monatlich ODER aber PHP schlampt (ist Faul) bei den Sicherheitslücken und bringt deshalb nur einen Patch monatlich heraus.
ODER Java ist sicher weil ja monatlich zehn Patches heraus gebracht werden ODER Java flickt nur die nötigsten Sicherheitslücken und ist von Hause aus unsicher und müsste also statt zehn Patches eher Hundert Patches monatlich erhalten.

Ich persönlich halte PHP für nicht unsicherer als andere Programmiersprachen, denn es kommt IMMER auf den Programmierer an und was der für Code schreibt und JA ein unfähiger Programmierer schafft es in JEDER Programmiersprache unsicheren Code zu schreiben. :D

Grüße: Mahony
Zuletzt geändert von Mahony am 29.01.2018 00:54, insgesamt 1-mal geändert.
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Tuxman
Mitglied
Beiträge: 2284
Registriert: 24.05.2003 13:32
Kontaktdaten:

Re: Sicherheit Programmiersprache

Beitrag von Tuxman »

Javascript ist eine unsichere Programmiersprache. Es erfüllt mich mit Sorge, dass immer mehr Websites seine Aktivierung voraussetzen. Es war nie dafür gedacht, dass man damit ganze Officepakete in einen Webbrowser hineinquetscht, und das merkt man ihm auch an.
Wer mal lachen will: http://www.tamagothi.de/2011/09/13/waru ... chbar-ist/
Mahony hat in einem entscheidenden Punkt aber Unrecht: moderne Browser kompilieren Javascript meist, bevor sie es ausführen... (trotzdem sollte man es häufiger vielleicht mal weglassen.)

Dass man in jeder Programmiersprache schlechten Code schreiben kann, ist richtig - aber PHP hat den Ruf einer besonders unsicheren Sprache zu Unrecht. Er liegt daran, dass fast jedes Einsteigerhostingpaket mit PHP daherkommt und daher Anfänger oft zuerst damit in Berührung kommen - und Anfänger machen mehr Fehler als Profis. Dafür kann PHP aber nichts. ;)
tux. Ehemaliger Moderator ohne Sondertitel.
tuxproject.de
Benutzeravatar
canonknipser
Ehemaliges Teammitglied
Beiträge: 2053
Registriert: 10.09.2011 11:14
Kontaktdaten:

Re: Sicherheit Programmiersprache

Beitrag von canonknipser »

Mal ein paar Anmerkungen von mir ;)
Mahony hat geschrieben:Damit Java-Programme starten können, muss das Java Runtime Environment auf dem Computer installiert sein.
Das kommt darauf an. Es gibt auch Java-Anwendungen, die auf einem Web-Server laufen und (wie auch php) html-Code zum Browser ausliefern. Da merkt man als Anwender gar nicht, dass da Java im Spiel ist, genau so, wie man es hier nicht merkt, dass php im Spiel ist (außer an der script-Endung, aber die kann man im Web-Server auch verstecken, wie einige "SEO"-Erweiterungen beweisen;) )
Tuxman hat geschrieben:Javascript ist eine unsichere Programmiersprache
Das ist eine gefährliche Pauschalisierung - es kommt wie bei allen Programmiersprachen und Ausführungsumgebung auf die Umsetzung an. Jede Programmiersprache kann unsicher sein.
Vielfach werden Frameworks und Bibliotheken eingesetzt, die vom Hersteller entsprechend "gehärtet" werden, z.B. die oft eingesetzten jquery-Bibliotheken. Werden diese korrekt eingesetzt, sind sie genau so sicher oder unsicher wie andere Programmiersprachen auch.

Leider ist Javascript genau so wie PHP in Verruf geraten, weil es eben so einfach zu verwenden ist und sich viele Homepagebetreiber via "Cut&Paste" Codebeipiele in ihre Webseiten eingebaut haben, ohne zu wissen, was sie tun. Da gab es keinen Gedanken an Variablen-Prüfungen, Code-Injection, Error-Handling usw.
Zu einem vernünftigen Coding gehört auch eine vernünftige QS ...

Aber viele Webseiten würden gar nicht den Komfort bieten, den sie heute haben, wenn es kein Javascript gäbe. Schon die simplen Funktionen hier im Editor wie BB-Codes oder Smilies einfügen basieren auf Javascript.
Grüße, canonknipser
"there are only 10 types of people: those, who understand binary and those, who don't"
just arrived ;) - Bilder
Kein Support via PN, nur im Board und (manchmal) im IRC
Tuxman
Mitglied
Beiträge: 2284
Registriert: 24.05.2003 13:32
Kontaktdaten:

Re: Sicherheit Programmiersprache

Beitrag von Tuxman »

Viele Websitebetreiber zwingen ihren Besuchern aber ihr Verständnis von Komfort auf, indem sie Javascript (meist ohne technischen Anlass) erzwingen - selbst ohne jede "interaktive" Komponente. Das halte ich für Irrsinn.
tux. Ehemaliger Moderator ohne Sondertitel.
tuxproject.de
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: Sicherheit Programmiersprache

Beitrag von BNa »

Und, wie (fast) immer, sitzt das Problem (meist) vor dem Monitor :D
Auch wenns "nur" der Web-Admin mit seiner 19" Konsole ist :lol:
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

Re: Sicherheit Programmiersprache

Beitrag von cYbercOsmOnauT »

JavaScript an sich arbeitet lokal im Browser und kann via XHTTP Daten vom Server abfragen, die es wiederum "on the fly" darstellt. Natürlich kann man JS ohne große Probleme verändern. Deswegen ist es auch die Aufgabe des Entwicklers, die Daten die vom JS zum Server kommen zu verifizieren und nur "saubere Daten" zurückzusenden. Ob diese dann lokal "verändert" dargestellt werden, ist dann egal. Schließlich schadet es niemanden.

Schlechtes JS: JS sagt an den Server "Ich bin User X, zeige mir meine Freundesliste!"
Gutes JS: JS sagt an den Server "Zeige mir meine Freundesliste!", serverseitig wird erkannt, wer der User ist.

Java ist eine Plattform unabhängige OOP Sprache mit vielen Restriktionen und leider auch Lücken. Zudem startet Java spürbar langsam.

PHP ist eine Skriptsprache, die auf dem Server läuft. Der User hat auf den Quellcode keinen Zugriff. Auch PHP geht immer mehr ins OOP hinein, wobei es weiterhin eine prozedurale Nutzung erlaubt.

JS mit PHP oder Java zu vergleichen, ist wie mit Äpfeln und Birnen.

Java kann man auch nur schwer mit PHP vergleichen. Es kommt darauf an, was man "erschaffen" möchte. In Thema Sicherheit geben sich beide nicht viel.

Grüße,
Tekin
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Benutzeravatar
yks
Mitglied
Beiträge: 1291
Registriert: 10.07.2004 02:31

Re: Sicherheit Programmiersprache

Beitrag von yks »

Hallo zusammen,

und Mahony und allen ganz herzlichen Dank für eure Antworten ! :)
Mir ist die Benachrichtigung der Antworten leider durchgerutscht, deshalb erst jetzt antworte.

Habe gerade mal versucht Tabellen mit einer Übersicht der Aktualisierungen von php, java, javascript zu finden - sind leider nicht ganz so vollständig bzw ausführlich (Quelle auf die Schnelle jeweils Wiki):

JavaScript
Version publiziert am
1 - Jun 97
2 - Jun 98
3 - Dez 99
4 - abgebrochen
5 - Dez 09
05. Jan ? Jun 11
2015[25][26] - Jun 15
2016[21][29] - Jun 16
2017[31] - Jun 17
2018 in Arbeit

Java
Version Veröffentlichung Codename
JDK 1.1.4 - 12. Sep 97 Sparkler
JDK 1.1.5 - 03. Dez 97 Pumpkin
JDK 1.1.6 - 24. Apr 98 Abigail
JDK 1.1.7 - 28. Sep 98 Brutus
JDK 1.1.8 - 08. Apr 99 Chelsea
J2SE 1.2 - 04. Dez 98 Playground
J2SE 1.2.1 - 30. Mrz 99 (keiner)
J2SE 1.2.2 - 08. Jul 99 Cricket
J2SE 1.3 - 08. Mai 00 Kestrel
J2SE 1.3.1 - 17. Mai 01 Ladybird
J2SE 1.4.0 - 13. Feb 02 Merlin
J2SE 1.4.1 - 16. Sep 02 Hopper
J2SE 1.4.2 - 26. Jun 03 Mantis
J2SE 5.0 (1.5.0) - 29. Sep 04 Tiger
JSE 6.0 - 11. Dez 06 (Mustang)[5]
JSE 7.0 - 28. Juli 2011[6] (Dolphin)[5]
JSE 8.0 - 18. März 2014[7] –
JSE 9.0 - 27. Juli 2017[8] –

php
Version Veröffentlichung
php 1 - ?
php 2 - ?
php 3 - 1997
php 4 - ?
php 5 - Sommer 2004
php 6 - weg
php 7 - 29. Jul 17
php 8


Weshalb ich das raus gesucht habe:
Wenn ich eine Software habe, die zB die letzte Vollversion 2010 heraus gegeben hat, ich aber sehe, dass inzwischen von der Sprache her neue Versionen heraus gekommen sind, dann könnte ich mir vorstellen, dass die Software nicht optimal angepasst, sprich evtl Fehler oder Lücken hat. Richtig ?

Zu Punkt 4) frage ich mich, ob es inzwischen sicherer ist oder nur weniger beachtet wird, weil bei vielen im Hintergrund oft alles aktiviert ist.

Auch wenn ich nicht viel Ahnung vom Programmieren habe, habe ich mich über ein paar gelesene Beispiele unter Tuxmans Link auch gewundert.

Schönes Wochenende
yks
Mit subsilver2 macht es noch viel mehr Spaß ! :)
Benutzeravatar
canonknipser
Ehemaliges Teammitglied
Beiträge: 2053
Registriert: 10.09.2011 11:14
Kontaktdaten:

Re: Sicherheit Programmiersprache

Beitrag von canonknipser »

Na ja, deine Aufzählung der der Veröffentlichungsdaten ist schon ein wenig willkürlich.
Bei JavasScript und PHP zählst du die Major Releases (Hauptversionsnummern) auf, bei Java die Minor releases und teilweise die Patchlevel ....
Beispiel PHP
Da würde ich die offizielle Releaseliste http://php.net/releases/ bzw. das Changelog der jeweiligen Versionslinie heranziehen. Da erkennt man dann auch, dass z.B. die Version 5 nach der Erst-Veröffentlichung im Juli 2004 kontinuierlich weiterentwickelt wurde, bis zur letzten Version 5.6.33 im Januar 2018

Und der Schlussfolgerung
yks hat geschrieben:Weshalb ich das raus gesucht habe:
Wenn ich eine Software habe, die zB die letzte Vollversion 2010 heraus gegeben hat, ich aber sehe, dass inzwischen von der Sprache her neue Versionen heraus gekommen sind, dann könnte ich mir vorstellen, dass die Software nicht optimal angepasst, sprich evtl Fehler oder Lücken hat. Richtig ?

kann ich gar nicht zustimmen.

Da spielen so viele Faktoren eine Rolle.

Beispiel php-Anwendungen (wie phpBB):
PHP ist eine sogenannte Interpretersprache, d.h. die Software, die auf PHP basiert, wird nicht in einem ausführbaren Maschinencode (Windows-Jargon: "exe-File") ausgeliefert, sondern als reiner Text. Dieser wird erst zu Ausführungszeit vom Interpreter, der in diesem Fall auf dem Webserver läuft, in ausführbare Befehle "interpretiert" (darum "Interpretersprache").
Das bedeutet im Regelfall, dass Code, der zu Zeiten von PHP 4 geschrieben wurde, oft auch mit neuen Version von PHP, z.B. PHP 7 läuft und dann direkt von den Verbesserungen und Fehlerbehebungen, die dort eingebaut wurden, profitiert. Da sind keinerlei Anpassungen in dem Programmcode notwendig.
Aber (das ganz große aber): Es gibt sehr oft Anpassungen in Programmiersprachen, die nicht aufwärtskompatibel sind. Das bedeutet, das Befehle, die in einer alten Version der Programmiersprache noch funktioniert haben, in einer neueren Version nicht mehr richtig oder gar nicht mehr funktionieren. Dafür gibt es dann die Migrationsleitfäden wie z.B. http://php.net/manual/de/migration5.php, die man als verantwortungsvoller Programmierer beachten sollte

Bei Compilersprachen sieht das etwas anders aus: Da werden die Programme in Form von Maschinenbefehlen ausgeliefert. Das heisst aber auch, das ein Programm, das mit einem Compiler im Jahr 2010 umgewandelt wurde, unverändert weiter ausgeführt wird (sofern dies vom Betriebsystem grundsätzlich unterstützt wird, z.B. können einige alte DOS-Programme immer noch unter Windows ausgeführt werden) (*)
Hier werden dann natürlich Verbesserungen, die im Compiler der Programmiersprache, sei es wegen Fehlerbehebungen oder wegen Erweiterungen, solange nicht berücksichtigt, bis das Programm neu kompiliert wurde,













(*) BTW: Ich arbeite beruflich als Programmierer mit einem IBM-Großrechner, da sind Programme aktiv im Einsatz, die vor 30 Jahren das letzte Mal compiliert wurden - und die laufen immer noch einwandfrei.
Grüße, canonknipser
"there are only 10 types of people: those, who understand binary and those, who don't"
just arrived ;) - Bilder
Kein Support via PN, nur im Board und (manchmal) im IRC
Benutzeravatar
yks
Mitglied
Beiträge: 1291
Registriert: 10.07.2004 02:31

Re: Sicherheit Programmiersprache

Beitrag von yks »

Hallo canonknipser,

danke für deine Antwort :)
canonknipser hat geschrieben:Na ja, deine Aufzählung der der Veröffentlichungsdaten ist schon ein wenig willkürlich.
Stimmt ;-) ich schrieb ja auch:
yks hat geschrieben:Habe gerade mal versucht Tabellen mit einer Übersicht der Aktualisierungen von php, java, javascript zu finden - sind leider nicht ganz so vollständig bzw ausführlich (Quelle auf die Schnelle jeweils Wiki)
yks hat geschrieben:Das bedeutet im Regelfall, dass Code, der zu Zeiten von PHP 4 geschrieben wurde, oft auch mit neuen Version von PHP, z.B. PHP 7 läuft und dann direkt von den Verbesserungen und Fehlerbehebungen, die dort eingebaut wurden, profitiert.
*mit den alten phpbb-Foren liebäugel :D

Danke für eure Erklärungen !
Eine gute Woche, yks
Mit subsilver2 macht es noch viel mehr Spaß ! :)
Antworten

Zurück zu „Coding & Technik“