Computerbeveiliging - Hoe je bad guys buiten de deur houdt

Is c# veiliger dan java?

16-04-2020, 08:59 door Anoniem, 26 reacties
Is c# veiliger dan java?

Wij hadden een security consultant op bezoek via zoom (vond dat(Zoom) al zo raar) en onze baas gaat nu alle Java programmeurs in C# laten programmeren...
Reacties (26)
16-04-2020, 18:59 door [Account Verwijderd]
Ik denk dat dat een fout is en hij beter Clojure zou kunnen gebruiken. https://en.wikipedia.org/wiki/Clojure. Op youtube zijn veel presentaties over Clojure.
16-04-2020, 19:20 door Anoniem
Nou, morgen een vers personeelsbestand. Want Javanen omscholen naar C#, dat is morgen velen die op gaan stappen.
16-04-2020, 19:55 door Anoniem
Door Anoniem: Is c# veiliger dan java?

Wij hadden een security consultant op bezoek via zoom (vond dat(Zoom) al zo raar) en onze baas gaat nu alle Java programmeurs in C# laten programmeren...

Wat een ontzettend raar verhaal.

De baas gaat de hele ontwikkelkeuze omgooien omdat één consultant een mooie babbel had ?
Spoort het wel, die tent bij jullie ? Heel kort door de bocht, als dat soort keuzes op zo'n basis gemaakt worden - het gaat gegarandeerd mis . Niet omdat er iets heel erg fout is met C# of Java, maar omdat er niemand aan het roer zit om zelf afgewogen te kiezen.

Is er daar geen software architect die dat soort keuzes maakt ?

In een beetje volwassen omgeving is "veiligheid van de programmeertaal" maar één van de redenen waarom een keuze gemaakt wordt - en zelden of nooit de belangrijkste.

Is het trouwens uberhaupt waar - dat de zaak _om die reden_ , en met zo'n dunne argumentatie "consultant op bezoek" omgegooid wordt ?
Of wordt het omgegooit, en staan de junioren onderaan hard te speculeren waarom en verzinnnen jullie zelf dat het "consultant zegt security" is ?

Je hebt vrijwel nooit de luxe van een greenfield omgeving, en een mix van talen gebruiken in hetzelfde product kan heel rare problemen geven - libraries/modules geschreven in de ene taal aanroepen vanuit een andere is het moment waarop mensen nog wel eens heel erg low level details van calling conventies en parameter overdracht van hun taal+compiler/interpreter moeten leren. Hoe erg dat speelt van java naar c# - geen idee. Maar het kan een serieuze uitdaging zijn.
Een toko die zich door een consultant met een zoom conference laat vertellen dat ze een andere taal moeten kiezen - dat is niet de plek waar ze die problemen aankunnen.

"We gaan V2.0 van ons succesproduct helemaal herschrijven in de One True Language en nu alles goed doen" voorkomt het mix-probleem, maar die keuze is nog wel eens de reden dat "Bedrijf X bestaat niet meer, nadat ze er niet slaagden om een goede opvolger van hun succesvolle WidgetPro V1 te maken"

Al met al een extreem raar verhaal - en des te meer omdat Java en C# zo ontzettend vergelijkbaar zijn, ook op het vlak 'veiligheid van taal'. C# begon toen Microsoft Java zag en vond "wij moeten dat ook voor Windows maken" .
16-04-2020, 20:23 door Anoniem
Heette die "security consultant" toevallig van Rijbroek?

Okee, flauwe vraag. Maar wat wel heel interessant is, is om te horen wat die figuur nou precies gezegd heeft en hoe hij dat denkt te onderbouwen. En ook: Wat de baas precies gevraagd heeft dat tot dit antwoord leidde.

Persoonlijk heb ik niet echt een hoge pet op van beide, om verschillende redenen, maar om zo even te zeggen dat de ene beter is dan de andere, nee. Zeker nadat oracle de boel opkocht is het een beetje lood om oud ijzer, qua "asshole company" die erachter zitten. En dat is maar één aspect van het hele verhaal.

Of het verstandig is van de baas om iedereen dan maar naar een andere taal om te scholen, eh, bij van PHP naar wat anders kan ik het me indenken, maar bij van java wegrennen? Klinkt een beetje naar een excuus zoeken. En daar een welwillige "consultant" voor inhuren, want daar zijn ze natuurlijk voor, ja toch niet dan?

Dus, vraag even door en vertel ons ook wat er verteld wordt.
16-04-2020, 21:29 door Anoniem
Zeg maar tegen je baas dat C# alweer achterhaald is en er echt toekomst in Q# zit ;-)
16-04-2020, 22:31 door [Account Verwijderd]
Ik sluit mij aan bij wat hier eerder al is geschreven. Een verklaring zou nog kunnen zijn dat deze consultant tussendoor heeft genoemd dat taal X enkele mooie eigenschappen heeft die taal Y niet heeft en dit enkele security problemen kan voorkomen. Hopelijk is dat verkeerd begrepen als zijnde dat alles anders moet. <insert joke over ruis op de (video) lijn>

Verder blijf ik mij er over verbazen dat je als 'security consultant' gebruik zou maken van Zoom. Daarmee stel je gelijk al je eigen geloofwaardigheid ter discussie, maar blijkbaar heeft nog niet iedereen die memo nog gelezen.
16-04-2020, 22:40 door Anoniem
Door Anoniem: Nou, morgen een vers personeelsbestand. Want Javanen omscholen naar C#, dat is morgen velen die op gaan stappen.
Misschien is dat de bedoeling wel. Mensen ontslaan is lastig en duur. Maar aankondigen dat ze in een andere taal moeten gaan programmeren is volkomen legaal. Als vervolgens een deel vrijwillig opstapt kan de werkgever altijd de beslissing herzien.
17-04-2020, 08:32 door The FOSS - Bijgewerkt: 17-04-2020, 08:33
Door Anoniem: Is c# veiliger dan java?

Nee. Het is op alle vlakken - dus ook beveiliging - een zwak aftreksel van Java EE! Dat en vendor lock-in.
17-04-2020, 09:29 door fvandillen
Door The FOSS:
Door Anoniem: Is c# veiliger dan java?

Nee. Het is op alle vlakken - dus ook beveiliging - een zwak aftreksel van Java EE! Dat en vendor lock-in.

Je stelligheid doet mij vermoeden dat je sowieso niet in staat bent om een objectieve opmerking te maken over deze vraag. Enige onderbouwing is in ieder geval afwezig. Daarnaast is je argument van vendor lock-in niet juist, vooral omdat de gehele dotnet omgeving cross platform is, en daarbij in steeds grotere mate open source: https://github.com/microsoft/dotnet.

Op basis van welke argumenten veronderstel je dat C#/dotnet een slap aftreksel is van Java EE?
17-04-2020, 10:23 door The FOSS - Bijgewerkt: 17-04-2020, 10:25
Door fvandillen:
Door The FOSS:
Door Anoniem: Is c# veiliger dan java?

Nee. Het is op alle vlakken - dus ook beveiliging - een zwak aftreksel van Java EE! Dat en vendor lock-in.

Je stelligheid doet mij vermoeden dat je sowieso niet in staat bent om een objectieve opmerking te maken over deze vraag. Enige onderbouwing is in ieder geval afwezig.

En waarom zou stelligheid met onderbouwing als oefening voor de lezer gelaten niet gewoon correct kunnen zijn? Google is your friend en Microsoft is als een vos die wel haar haren maar niet haar streken verliest. Onderbouwing hieronder.

Door fvandillen: Daarnaast is je argument van vendor lock-in niet juist, vooral omdat de gehele dotnet omgeving cross platform is, en daarbij in steeds grotere mate open source: https://github.com/microsoft/dotnet.

Microsoft zal om haar concurrentiepositie niet te verliezen meedoen aan het open source maken van delen van haar .NET platform. Voor de CLR echter - waarmee de naar IL gecompileerde C# broncode wordt uitgevoerd - heeft Microsoft alleen maar 'beloofd' dat het concurrende implementaties niet zal aanklagen. De vigerende consensus is dat Microsoft daarin niet is te vertrouwen...

https://www.reddit.com/r/csharp/comments/7cd95p/how_is_c_cross_platform/
C# compiles to IL, which is like bytecode. Microsoft published the specifications for a "Common Language Runtime" (CLR) to represent an API, and tools for running IL. Microsoft only made a Windows CLR, but made a binding legal promise they wouldn't sue people for making other CLRs. For the most part, people didn't trust Microsoft.

Dat zogenaamde cross-platform zijn is dus een schijnvertoning! So it's "cross-platform" much like Mario is "a plumber". - https://www.reddit.com/r/csharp/comments/7cd95p/how_is_c_cross_platform/

Door fvandillen: Op basis van welke argumenten veronderstel je dat C#/dotnet een slap aftreksel is van Java EE?

Java is more popular than C# because C# is literally just Micro$ofts version of Java with the serial numbers filed off.

It is essentially the same language, and the same runtime, and the same set of libraries, only C# is locked in to the Micro$oft ecosystem, while Java is not.

This all has its roots in a 1990s lawsuit between Sun and Micro$oft, but no matter. Micro$oft has been so sketchy with its vendors and developers for the last three decades that it is impossible to trust them and be willing to lock in to them as ones sole vendor. Ergo, Java, which doesn’t demand that, is a much more popular choice.

Oh, and with Java, you don’t have to run on a craptastic OS that can barely stay running under any load.

So, to summarize:

Java: run anywhere, run forever, good standardization.

C#: run only on Windows, reboot often — often unexpectedly. Constantly changing in incompatible ways.

Is it any wonder that C# is only useful for fanboys writing ASP pages?


https://www.quora.com/Why-is-Java-more-popular-than-C
17-04-2020, 10:35 door fvandillen
Je wantrouwt de belofte van Microsoft, maar citeert wel selectief je eigen bron:
https://www.reddit.com/r/csharp/comments/7cd95p/how_is_c_cross_platform/
For some reason, Sun/Oracle have chosen to sue people for making successful JVMs.

Daarnaast heb je nog steeds op geen enkele wijze onderbouwd waarom C# minder veilig zou zijn dan Java. Dat is namelijk waar dit topic over gaat. Naar mijn weten is Java lange tijd op grote schaal misbruikt om malafide code via browsers bij eindgebruikers uit te voeren. Dat is pas écht een aantoonbaar security lek.

Uiteindelijk komt de security van code grotendeels neer op de omgeving waarin deze uitgevoerd wordt en degene die de code ontwerpt/schrijft.
17-04-2020, 10:58 door Anoniem
The Foss, op het moment dat je quotes aanhaalt met "Micro$oft" daarin, ben je gelijk een fake news idioot die ergens een artikeltje van FB heeft gehaald.
Geef op z'n minst een onderbouwing van een objectief iemand, niet een of andere Linux/Java bozo.
17-04-2020, 11:03 door Anoniem
Door fvandillen: Je wantrouwt de belofte van Microsoft, maar citeert wel selectief je eigen bron:
https://www.reddit.com/r/csharp/comments/7cd95p/how_is_c_cross_platform/
For some reason, Sun/Oracle have chosen to sue people for making successful JVMs.
Nouja, "people", andere grootbedrijven die leuk java wilden gebruiken op een manier waar sunacle het niet mee eens was (cq tegen de licentievoorwaarden in) en/of zonder licentiekosten te betalen. Want kijk goed naar de licentie, zo heel vrij is'ie nooit geweest.

Maar inderdaad, ik heb het gedoe met java ook nooit leuk gevonden. Het was altijd nodeloos veel werk om een werkende, legale versie op mijn FOSS-OS machientjes te krijgen. c#/.net was helemaal geen optie, en mono nauwlijks serieus te nemen. En beide waren altijd al veel te groot en te log naar mijn smaak.

Daarnaast heb je nog steeds op geen enkele wijze onderbouwd waarom C# minder veilig zou zijn dan Java.
Niet op technisch vlak, maar je mag wel een beetje minder generaliserend en (zoals in je eerste post in dit topic) wat minder op de man spelen.

Dat is namelijk waar dit topic over gaat. Naar mijn weten is Java lange tijd op grote schaal misbruikt om malafide code via browsers bij eindgebruikers uit te voeren. Dat is pas écht een aantoonbaar security lek.
Dat de browser-plugins om java in de browser mee uit te voeren regelmatig lek bleken en oracle nogal "enterprise-ig" met het uitbrengen van patches omging (en omgaat) heeft de reputatie van java geen goed gedaan. Maar de browser-plugin is niet de gebruikelijke manier waarop alle andere toepassingen van java vertrouwen, zoals "servlets", enterprise-applicaties, en noem maar op.

Dus ja, dat probleem met de java-browser-plugins was serieus genoeg om breed van die plugin af te stappen, maar nee, dat moet je niet op het bordje van "java" schuiven, dan scheer je teveel over een kam. Sterker, ik ben hier zelfs al niet eens specifiek genoeg geweest, want "java" is de taal, "jvm" is de virtual machine (waar ook andere talen gebruik van kunnen maken) en de browser-plugins verbinden de jvm met de browser, niet "java".

Het is tevens niet erg pertinent: De vraag ging over "c# versus java" en bij mijn weten heeft "c#" (eigenlijk de .net runtime) niet eens een browser-plugin, zeker niet zo breed verbreid gehad als java dat ooit had.

Uiteindelijk komt de security van code grotendeels neer op de omgeving waarin deze uitgevoerd wordt en degene die de code ontwerpt/schrijft.
Ja en nee. De premisse van java was wel dat de taal en uitvoeromgeving veiliger zou zijn dan bijvoorbeeld C of C++. (De premisse van c# en .net was om sunacle het gras voor de voeten weg te maaien, zoals reeds opgemerkt.)


Over dat technische vlak, ik heb ooit een analyse gelezen over de (toen nog nieuwe) .net standard library en het commentaar was dat ze er wat layer violations en andere veiligheidsproblemen als "feature" ingestopt hadden, dus dat de architectuur al vanaf het begin brakjes was, wat een veiligheidsrisico inhoudt. Ik zou nu alleen totaal niet meer weten waar ik het las of hoe ik het terug moet vinden. Het is al een tijdje terug.

Van java heb ik zulke problemen niet gezien. Wel "Execution in the kingdom of nouns" maar als c# werkelijk zo'n kopie is dan heeft dat waarschijnlijk vergelijkbare problemen. En dat gaat over expressiviteit, niet zozeer security-aspecten.
17-04-2020, 11:05 door The FOSS - Bijgewerkt: 17-04-2020, 11:05
Door fvandillen: Je wantrouwt de belofte van Microsoft, maar citeert wel selectief je eigen bron:
https://www.reddit.com/r/csharp/comments/7cd95p/how_is_c_cross_platform/
For some reason, Sun/Oracle have chosen to sue people for making successful JVMs.

OpenJDK.

Door fvandillen: Daarnaast heb je nog steeds op geen enkele wijze onderbouwd waarom C# minder veilig zou zijn dan Java. Dat is namelijk waar dit topic over gaat.

While practically every pointer type construct in C or C++ has a reference type counterpart in C#, nonetheless, there are situations where access to pointer types becomes a necessity. For example, interfacing with the underlying operating system, accessing a memory-mapped device, or implementing a time-critical algorithm may not be possible or practical without access to pointers. To address this need, C# provides the ability to write unsafe code.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/unsafe-code

Van die molensteen komen ze nooit meer af.

Door fvandillen: Naar mijn weten is Java lange tijd op grote schaal misbruikt om malafide code via browsers bij eindgebruikers uit te voeren. Dat is pas écht een aantoonbaar security lek.

Dat waren Java applets en de hoofdreden voor de onveiligheid daarvan was dat browsers geen fatsoenlijk werkende sandbox konden bieden. Java applets zijn al lang uitgefaseerd.

Door fvandillen: Uiteindelijk komt de security van code grotendeels neer op de omgeving waarin deze uitgevoerd wordt en degene die de code ontwerpt/schrijft.

Nee, goed gereedschap is het halve werk.
17-04-2020, 11:30 door Anoniem
Door The FOSS:

Nee, goed gereedschap is het halve werk.
Helaas is jouw meeste gebruikte stuk gereedschap jouw onderbuikgevoel!
17-04-2020, 12:04 door The FOSS - Bijgewerkt: 17-04-2020, 12:08
Door Anoniem: ... Dus ja, dat probleem met de java-browser-plugins was serieus genoeg om breed van die plugin af te stappen, maar nee, dat moet je niet op het bordje van "java" schuiven, dan scheer je teveel over een kam. Sterker, ik ben hier zelfs al niet eens specifiek genoeg geweest, want "java" is de taal, "jvm" is de virtual machine (waar ook andere talen gebruik van kunnen maken) en de browser-plugins verbinden de jvm met de browser, niet "java".

Het is tevens niet erg pertinent: De vraag ging over "c# versus java" en bij mijn weten heeft "c#" (eigenlijk de .net runtime) niet eens een browser-plugin, zeker niet zo breed verbreid gehad als java dat ooit had.

Er is ook Silverlight geweest - https://www.microsoft.com/silverlight/ maar dat is al lang (net als de Java-browserplug-in) uitgefaseerd (support eindigt oktober 2021). Ook de Mono afgeleide Moonlight https://www.mono-project.com/docs/web/moonlight/ wordt niet meer ondersteund.

Door Anoniem:
Door The FOSS:

Nee, goed gereedschap is het halve werk.
Helaas is jouw meeste gebruikte stuk gereedschap jouw onderbuikgevoel!

Toegegeven, ik heb mogelijk een zekere antipathie richting Micro$oft, die ik graag mag verdedigen.
17-04-2020, 12:07 door The FOSS - Bijgewerkt: 17-04-2020, 12:07
...
17-04-2020, 13:12 door Anoniem
Door The FOSS:

Toegegeven, ik heb mogelijk een zekere antipathie richting Micro$oft, die ik graag mag verdedigen.
Noem je dat zo?
17-04-2020, 14:02 door The FOSS
Door Anoniem:
Door The FOSS:

Toegegeven, ik heb mogelijk een zekere antipathie richting Micro$oft, die ik graag mag verdedigen.
Noem je dat zo?

Terechte antipathie richting een aantoonbaar kwaadaardig, enkel in winst geïnteresseerd bedrijf met software van voornamelijk zeer belabberde kwaliteit is inderdaad een betere omschrijving.
17-04-2020, 14:18 door Anoniem
De veiligheid van een programmeertaal zit hem vooral in de kennis en ervaring van de programmeur.
Iedere programmeertaal heeft sterkere en zwakkere punten.
Wat van belang is, is dat een programmeur weet wat de sterkere punten en zwakkere punten van de gebruikte programmeertaal zijn (zodat hij er rekening mee houdt), en dat hij veel ervaring met de gebruikte programmeertaal heeft.
17-04-2020, 14:41 door MathFox
Zowel Java als C# zijn talen waarin ervaren programmeurs veilige programma's kunnen schrijven. Een beginner zal in ieder van de talen beginnersfouten maken die tot gaten in de beveiliging kunnen leiden. Ervaren Java programmeurs in C# laten programmeren is vragen om een periode met problemen.
17-04-2020, 14:45 door fvandillen
Door The FOSS:

Door fvandillen: Daarnaast heb je nog steeds op geen enkele wijze onderbouwd waarom C# minder veilig zou zijn dan Java. Dat is namelijk waar dit topic over gaat.

While practically every pointer type construct in C or C++ has a reference type counterpart in C#, nonetheless, there are situations where access to pointer types becomes a necessity. For example, interfacing with the underlying operating system, accessing a memory-mapped device, or implementing a time-critical algorithm may not be possible or practical without access to pointers. To address this need, C# provides the ability to write unsafe code.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/unsafe-code

Van die molensteen komen ze nooit meer af.

Wat een ongelofelijk gelul man. Dat het concept unsafe code heet, wil niet zeggen dat de hele programmeertaal onveilig is. Als je nu eens die hele pagina van Microsoft zou lezen, dan snap je wat het concept betekent en in welke situatie je dit zou willen gebruiken.

Het willekeurig rondstrooien van linkjes en deze selectief citeren komt je verhaal in ieder geval niet ten goede.
18-04-2020, 00:36 door johanw
Door The FOSS:
Door Anoniem: Is c# veiliger dan java?

Nee. Het is op alle vlakken - dus ook beveiliging - een zwak aftreksel van Java EE! Dat en vendor lock-in.
Nou, die vendor lockin speelt bij Java ook wel - Google is daar achter gekomen nadat ze door Oracle aangeklaagd werden voor het gebruik van Java in Android. Dat is de reden dat ze nu Kotlin hebben ontwikkeld als alternatieve taal.
18-04-2020, 03:45 door The FOSS - Bijgewerkt: 18-04-2020, 04:09
Door fvandillen:
Door The FOSS:

Door fvandillen: Daarnaast heb je nog steeds op geen enkele wijze onderbouwd waarom C# minder veilig zou zijn dan Java. Dat is namelijk waar dit topic over gaat.

While practically every pointer type construct in C or C++ has a reference type counterpart in C#, nonetheless, there are situations where access to pointer types becomes a necessity. For example, interfacing with the underlying operating system, accessing a memory-mapped device, or implementing a time-critical algorithm may not be possible or practical without access to pointers. To address this need, C# provides the ability to write unsafe code.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/unsafe-code

Van die molensteen komen ze nooit meer af.

Wat een ongelofelijk gelul man. Dat het concept unsafe code heet, wil niet zeggen dat de hele programmeertaal onveilig is. Als je nu eens die hele pagina van Microsoft zou lezen, dan snap je wat het concept betekent en in welke situatie je dit zou willen gebruiken.

Het willekeurig rondstrooien van linkjes en deze selectief citeren komt je verhaal in ieder geval niet ten goede.

Wat een ongelooflijk domme opmerking man! Als je de consequenties van wat die pagina beschrijft zou begrijpen, dan zou je beseffen dat het ondersteunen van unsafe constructies grote gevolgen heeft! Zie de kritiek van de ontwerper van Java op C#: https://softwareengineering.stackexchange.com/questions/329244/what-did-james-gosling-mean-when-told-that-c-is-java-with-no-reliability-produ/329255

(Zie 't best answer)

Maar ja, een beetje kunnen doordenken is je duidelijk niet gegeven...
18-04-2020, 05:23 door [Account Verwijderd] - Bijgewerkt: 18-04-2020, 05:33
Door johanw:
Door The FOSS:
Door Anoniem: Is c# veiliger dan java?

Nee. Het is op alle vlakken - dus ook beveiliging - een zwak aftreksel van Java EE! Dat en vendor lock-in.
Nou, die vendor lockin speelt bij Java ook wel - Google is daar achter gekomen nadat ze door Oracle aangeklaagd werden voor het gebruik van Java in Android. Dat is de reden dat ze nu Kotlin hebben ontwikkeld als alternatieve taal.

Ik dacht altijd dat het geheugen van de moderne mens[1] zo ongeveer 10 jaar was. Daar had ik het dus fout in. Maar als jij iets langer in de geschiedenis zou willen gaan dan kom je tot de conclusie dat Microsoft toch wel heel veel zaken op een wel zeer slinkse manier deed en eigenlijk had meneer Gates achter de Gates moeten zitten, maar je weet wel, het Amerikaanse "rechtssysteem" voorkomt dat rijke mensen de gevangenis in gaan.

[1] En met de moderen mens bedoel ik een persoon die toegang heeft tot het internet, die verschillende fora bezoekt en die daarop ook regelmatig op reageert.
18-04-2020, 06:44 door The FOSS
Door johanw:
Door The FOSS:
Door Anoniem: Is c# veiliger dan java?

Nee. Het is op alle vlakken - dus ook beveiliging - een zwak aftreksel van Java EE! Dat en vendor lock-in.
Nou, die vendor lockin speelt bij Java ook wel - Google is daar achter gekomen nadat ze door Oracle aangeklaagd werden voor het gebruik van Java in Android. Dat is de reden dat ze nu Kotlin hebben ontwikkeld als alternatieve taal.

Nou nee want Kotlin draait op de JVM (Java Virtual Machine). Als ze om de door jou gesuggereerde reden Kotlin hadden ontwikkeld dan zou het zeker niet op de JVM draaien.
Reageren

Deze posting is gelocked. Reageren is niet meer mogelijk.