System-wide key

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Programmeur

Functie Heb jij altijd al samen willen werken met ervaren java ontwikkelaars dan hebben wij hier de ultieme kans voor jou! Voor een opdrachtgever in omgeving van Naaldwijk zijn wij op zoek naar uitbreiding van het vaste ontwikkel team. Je zult je hier voornamelijk bezig gaan houden met; Wijzigingsverzoeken van klanten uitvoeren, hier wordt je diep in betrokken; Samen met consultants sluit je aan bij gesprekken met klanten, voor alle projecten; Je schakelt veel met consultants, wat is de behoefte van de klant? Hoe kan je hierop integreren?; Het framework moet naar de Cloud gebracht worden, je wordt betrokken bij

Bekijk vacature »

Fullstack Developer TOTO

Do you want to work with the latest technologies on the development of new systems and applications? Get moving and strengthen Nederlandse Loterij as a Fullstack Developer TOTO. Thanks to your efforts, complex business critical applications are always running smoothly. In this way, you directly contribute to a happy, healthy and sporty Netherlands. As a Fullstack Developer you score by: Taking ownership of the development cycle of an application in a large scale, high availability, geo redundant landscape Coaching your peer developers and safeguarding code quality Integrating the application with other components of the system using the available API’s Managing

Bekijk vacature »

Medior C# Developer

You'll build modern applications for Coolblue's back office. We have a lot of friends, and they crave well-structured data and user-friendly, task-focused applications. How do I become a Medior C# Developer at Coolblue? You regularly participate in brainstorm sessions about user experience, data, and task flow with the UX Designer, Product Owner, and Data Scientists in your team. Besides that you will create disconnected, highly congruent, and testable code that can easily be maintained and is future-proof. Want to become C# Developer at Coolblue? Read below if the job suits you. You enjoy doing this Working with various types of

Bekijk vacature »

Developer (One Data)

Do you have experience with managing IT Teams in a service delivery organization? Are you keen to bring the team and our platform to a higher level? Then Nutreco has a very interesting role for you! As a One Data developer you are responsible for the management, running and functional use of our integration landscape and processes within Nutreco. Nutreco is using at this time BizTalk 2016, and Apigee for its API management, to be replaced by Azure Integration Services as of 2023. You will be part of a virtual teams of 11 people (own and outsourced) working in an

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Cobol Developer

Dit ga je doen Als Cobol Ontwikkelaar zal je gaan meebouwen aan een onderdeel van het backend systeem waarbij je het functionele ontwerp vertaald naar een technische oplossing die geïntegreerd kan worden in de huidige omgeving. Je zorgt ervoor dat de bedrijfsprocessen op een efficiënte manier worden uitgevoerd en werkt proactief aan het verbeteren hiervan. Samen met jouw collega’s reviewen jullie elkaars code en test je je eigen code. Je werkt nauw samen met andere ontwikkelaars, testers en functioneel ontwerpers. Taken pakket: Beheren en doorontwikkelen van de bestaande omgeving; Vertalen van een functionele vragen naar een technische oplossing; Doorvoeren van

Bekijk vacature »

Ervaren PHP Developer

Functieomschrijving PHP Developer met brede ervaring gezocht! Ben jij een Full Stack PHP Developer met brede ervaring die toe is aan een volgende stap? Lees dan snel verder! Voor onze eindklant in de regio Nunspeet zijn wij op zoek naar een ervaren PHP Developer die het IT Team van deze organisatie gaat versterken. Wij zoeken een enthousiaste en breed georiënteerde IT-er die er voor gaat zorgen dat deze innovatieve organisatie de volgende stap gaat maken. Om deze functie goed uit te kunnen voeren moet je communicatief goed zijn en in staat zijn om zelfstandig problemen op te lossen. Daarnaast bestaat

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Roosendaal, ontwikkel je als PHP Developer niet alleen webapplicaties, maar ben je verder ook gefocust op het continu inspelen op nieuwe trends en ontwikkelingen m.b.t software development. Naast het bouwen van webapplicaties, ontwikkelen zij ook webshops en websites voor gave opdrachtgevers! Wat ga je doen? Het schrijven van schone en efficiënte codes volgens het Symfony framework; Het ontwerpen en implementeren van webapplicaties met het Symfony-framework; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het Symfony framework; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de

Bekijk vacature »

Back end developer Digital Agency

Functie Wij zijn van origine een wordpress bureau, maar sinds 2006 zijn wij dit wel redelijk ontgroeid. Naar mate de jaren verstreken zijn we gegroeid in omvang, maar ook in de complexiteit van opdrachten waarin wij onze klanten kunnen bedienen. Momenteel bestaat onze organisatie uit 4 front end developers, 12 back end developer 3 projectmanagers en een 2 koppig management. Wij zijn een hele informele, bijna familiaire organisatie. Geen strak pak of overhemd, nee gewoon dragen waar jij je prettig bij voelt. De gemiddelde leeftijd ligt tussen de 25 en 30 en wij doen er veel aan om onze hechte

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Voor een opdrachtgever, met een prachtig kantoor in omgeving Wateringen zijn wij op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind jij het leuk om in een Agile/Scrum omgeving te werken? Wil jij

Bekijk vacature »

C# developer

Functie Als ervaren Software Engineer wordt jij verantwoordelijk voor het bedenken en ontwikkelen van technische (maatwerk) oplossingen voor onze klanten en dit samen met de klant af te stemmen. Jij wordt o.a. verantwoordelijk voor de doorontwikkeling het software pakket welke voor ons enorm belangrijk is. Dit pakket zorgt er namelijk voor dat wij complete productielijnen kunnen aansturen en monitoren. Daarnaast heb jij actief contact met onze hoofdvestiging om het software achter een van onze systemen te verbeteren en te herschrijven. Momenteel zijn onze C# applicaties geschreven met o.a. Winforms. Echter hebben wij de actieve ambitie om dit te gaan herschrijven

Bekijk vacature »

C# .NET Developer

Functieomschrijving Voor dit leuke softwarre bedrijf in de omgeving Vught zijn we per direct op zoek naar een C#/.NET Developer. Is development jouw passie en doe je dit graag met C#/.NET? Lees dan snel verder! Jou werkzaamheden zullen zijn: Zorgen voor de optimalisatie van de huidige software en het automatiseren van bedrijfsprocessen. Naar aanleiding van de wensen van de klant ga je, met je collega's op zoel naar passende oplossingen en je werkt dit uit tot een mooi eindproduct. Je gaat webshops, websites en webapplicaties ontwikkelen door middel van ASP.NET, C# en MVC Framework. Bedrijfsprofiel Deze opdrachtgever houdt zich bezig

Bekijk vacature »

Developer Full Stack

Functie omschrijving Full Stack Developer gezocht! Wij zijn op zoek naar een Full Stack Developer voor een bedrijf in de regio Nijkerk. Je maakt in deze functie onderdeel uit van een groeiend team met een goede ambitie waarbij eenheid, betrokken en overtreffen de belangrijkste kernwaardes zijn. Het bedrijf werkt volgens de AGILE/SCRUM methode, wat je o.a. terug vindt in de tweewekelijkse sprints, retrospectives en een daily standup. Je takenpakket bestaat uit: Bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een Saas applicatie; Bijdragen aan de innovatie van het bedrijf en hun klanten; Het ontwikkelen op de laatste technologie van

Bekijk vacature »

Back End Developer

As a Back End developer at KUBUS you will be developing the (web) application and services of BIMcollab. You have a focus on the back end of our software, for which we mainly work with C# and .NET. We use a full-stack approach, which means that in addition to the back-end, you will also help with other parts of the code. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact

Bekijk vacature »

Pagina: 1 2 volgende »

Ward van der Put
Moderator

Ward van der Put

30/11/2014 09:55:37
Quote Anchor link
In een database sla ik de hash van wachtwoorden op. Daarbij gebruik ik naast een salt per wachtwoord nog een system-wide key. In pseudocode:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$hash
= pbkdf2($system_wide_key . $salt . $password);
?>


De system-wide key mag, anders dan de salts en de hashes, natuurlijk nooit in de database worden opgeslagen. Maar waar zal ik deze key dan opslaan? Wat kunnen jullie me aanbevelen?
 
PHP hulp

PHP hulp

22/12/2024 03:16:19
 
- Ariën  -
Beheerder

- Ariën -

30/11/2014 10:45:12
Quote Anchor link
Persoonlijk zou ik hem buiten de webroot opslaan.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

30/11/2014 12:27:10
Quote Anchor link
Ik zou hem ook buiten het publieke gedeelte van de website in een config file opslaan. Dat ding verander je toch nooit meer
 
Dos Moonen

Dos Moonen

30/11/2014 13:31:57
Quote Anchor link
Het liefst zou je het opslaan in een Hardware Security Module (HSM) die je dan de opdracht geeft een Message Authentication Code (MAC) te genereren voor het wachtwoord. De MAC is dan wat je samen met een uniek salt aan PBKDF2 voert.

Maar dat kost weer geld. Buiten de webroot kost niets extra.
 
Ward van der Put
Moderator

Ward van der Put

30/11/2014 14:50:10
Quote Anchor link
Okay, dank allen.

Het punt is dat ik eigenlijk een derde niveau nodig heb. Buiten de root zijn namelijk gebruikersnaam en wachtwoord van de database opgeslagen, dus de system-wide key sla ik dan liever niet op hetzelfde niveau op. Niet dat de key dan nutteloos is, verre van, maar het kan nog veiliger, zoals Dos aangeeft, door de sleutel elders weg te parkeren.
 
Eddy E

Eddy E

30/11/2014 15:27:52
Quote Anchor link
Liefst nog op een andere website, waar je altijd bij kan komen, ook als je eigen website gehackt is.
Dus op een andere CDN oid.
 
Ozzie PHP

Ozzie PHP

30/11/2014 21:15:27
Quote Anchor link
Ward, waar ben je precies "bang" voor? Welk risico probeer je in te perken?
 
Bart V B

Bart V B

30/11/2014 21:45:43
Quote Anchor link
Ik kan natuurlijk niet voor Ward spreken, maar ik zou me kunnen voorstellen dat hij een licentie achtige applicatie aan het maken is, en dat ene stukje code uber geheim wenst te houden.
 
Ozzie PHP

Ozzie PHP

30/11/2014 21:56:22
Quote Anchor link
Het zou kunnen, maar ik ben benieuwd waarom hij juist de code ergens anders wil zetten. Ik zou denken dat als iemand al buiten de root kan komen, niks meer veilig is.
 
Bart V B

Bart V B

30/11/2014 22:02:19
Quote Anchor link
Nee daarom. Als zijn systeem ergens plat gaat of als het buiten de root staat, dan is die ene extra code nou juist net het missende stukje waardoor het wel gehackt is, maar de schade beperkt. Men kan daar verder niets meer mee. Vandaar snap ik Eddy's reply wel door te zeggen: zet het totaal ergens anders neer.
Gewijzigd op 30/11/2014 22:04:08 door Bart V B
 
Ward van der Put
Moderator

Ward van der Put

01/12/2014 07:12:02
Quote Anchor link
Correct, je kunt in één keer de boel op slot gooien door de sleutel in te trekken. Dat geldt ook voor de accounts van admins: gebruikers die doorgaans wél toegang hebben tot bestanden buiten de root.

Verder gaat het ook om het principe natuurlijk. Je hebt namelijk:

1. Salt en wachtwoordhash in de database.
2. Databasegebruikersnaam en databasewachtwoord buiten de root.
3. System-wide key.

De system-wide key kan dus beter niet worden opgeslagen in (1) de database of (2) de configuratie buiten de root.
 
Ozzie PHP

Ozzie PHP

01/12/2014 11:57:22
Quote Anchor link
>> De system-wide key kan dus beter niet worden opgeslagen in (1) de database of (2) de configuratie buiten de root.

Ik snap wat je bedoelt te zeggen, maar is het echt noodzakelijk. Dat is wat ik me afvraag. Op het moment dat iemand je database leegtrekt, dan zijn de wachtwoorden via de hashes beschermd. Als iemand je server kraakt en dus overal bij kan, dan is in principe niks meer veilig. Als een hacker die expertise heeft, dan zal hij ook de expertise hebben om te kunnen zien waar die system-wide key vandaan komt ... en ... hij zal die key dan ook kunnen downloaden. Hij heeft immers toegang tot jouw server. De vraag is dus of dit niet een vorm van schijnveiligheid is.

Als iemand de database leegtrket, zou je dat kunnen zien alsof je ergens een raampje hebt open laten staan. Als iemand echter je voordeur forceert, dan vrees ik dat je platgezegd de l@l bent. Dan kun je de system-wide key wel ergens in een kluisje hebben gestopt, het probleem is echter dat de sleutel van die kluis zich ook ergens in huis bevindt.
 
Ward van der Put
Moderator

Ward van der Put

01/12/2014 12:31:56
Quote Anchor link
>> Dan kun je de system-wide key wel ergens in een kluisje hebben gestopt, het probleem is echter dat de sleutel van die kluis zich ook ergens in huis bevindt.

Precies, daarom moet die sleutel dus niet in huis bewaard worden.

Sla je sleutel op buiten de root, dan is dat niet zozeer schijnveiligheid, maar is de toegevoegde waarde inderdaad veel beperkter. Je hebt dan meer een soort noodrem: je kunt bij wijze van spreken even // voor de define('SYSTEM_WIDE_KEY', '...') zetten en de heleboel gaat vanzelf op slot. Dat kan bijvoorbeeld nuttig zijn als je eerst wilt onderzoeken wat er loos is.

Bart noemde een toepassing die ik niet voor ogen had maar die ook nuttig kan zijn: het intrekken van een externe licentiesleutel heeft een vergelijkbaar effect.
 
Bart V B

Bart V B

01/12/2014 12:47:13
Quote Anchor link
Het leek me het beste voorbeeld om het duidelijker te maken waarvoor je het kunt toepassen.
Wat me wel interresant lijkt om te weten hoe je dat stukje externe code het beste zou kunnen mengen in je code.
Want dat lijkt me niet makkelijk.
Ik zou me kunnen voorstellen dat je daar een externe database voor in zet.
Dan zou je de sleutels op kunnen slaan per user/licentie of wat dan ook.
Daar zou je ook extern nog een beveiliging in kunnen brengen met meer dan 3 pogingen mislukt, de boel daar op slot te zetten.
Het is maar even een hersenspinsel.
 
Ozzie PHP

Ozzie PHP

01/12/2014 14:49:55
Quote Anchor link
>> Precies, daarom moet die sleutel dus niet in huis bewaard worden.

Maar wat ik bedoel is dat je de sleutel (zijnde de key zelf óf de code om de key op te halen) altijd binnenshuis moet opslaan, anders kun je zelf ook de kluis niet meer openen ;)

Je hebt in feite 2 "secties" op server-niveau. Je hebt een publiek gedeelte (document root / web root) waarvan een bezoeker rechtstreeks bestanden kan aanroepen, en je hebt een niveau hoger ... een privé gedeelte waar een bezoeker niet bij kan.

Zorg ervoor dat al je code buiten de web root staat, ofwel in het privé gedeelte. Dus ook je system-wide key.

Als iemand via sql injectie databasegegevens steelt, dan heeft hij de system-wide key niet. Goedzo!

Echter, als iemand in staat is om binnen te dringen in het privé gedeelte, dan maakt het niet meer uit of jij die system-wide key op de server of ergens extern hebt opgeslagen. Namelijk:

Om een site te laten werken, moet de system-wide key beschikbaar zijn in het privé gedeelte. Ergens in de code staat dus óf de key zelf, óf een script dat de system-wide key ophaalt. Een hacker kan dat stukje code uitvoeren, en heeft vervolgens alsnog de key te pakken. Dus wat is dan nog de meerwaarde? Het enige wat je feitelijk doet is de key "verstoppen".

Oké, als je helderziend bent, dan zou het meerwaarde kunnen hebben. Dan kun je 5 minuten voordat de hacker jouw server binnendringt alle keys op de externe server deactiveren, maar ja ... ik ben niet helderziend helaas.

Wat ik hiermee wil zeggen is dat je dus eigenlijk maar 1 optie hebt, en dat is alles buiten de web root opslaan. Je kunt wel alles extern opslaan op een andere server, maar volgens mij heeft dat geen meerwaarde om hack-pogingen tegen te gaan. Wel heeft het als negatief effect dat de website trager wordt en dat op het moment dat de externe database eruit ligt, de complete website plat gaat.
 
Ward van der Put
Moderator

Ward van der Put

01/12/2014 15:10:26
Quote Anchor link
Ozzie, zó ver reikt mijn begrip van servers al wel hoor ;-)

>> Echter, als iemand in staat is om binnen te dringen in het privé gedeelte, dan maakt het niet meer uit of jij die system-wide key op de server of ergens extern hebt opgeslagen.

Je gaat er dan van uit dat webserver en databaseserver op dezelfde VPS-server draaien, maar dát is niet per se het geval. En ook niet heel verstandig, juist om de redenen die je zelf noemt. De aanname dat een gecompromitteerde webserver of FTP-server meteen de databaseserver raakt (en vice versa), gaat daarom lang niet altijd op.

Je kunt webservers (meervoud) en een cluster met databaseservers (meervoud) hebben; die delen dan een netwerk, maar meer ook niet. De idee om daaraan een extra laag toe te voegen voor die sleutel in hardware, op een extra server óf in een extra database is dus niet onlogisch.

Je kunt het enigszins met andere vormen van encryptie vergelijken. Dat kan peer-to-peer met twee partijen die elkaar vertrouwen. Maar het kan ook via een trusted third partij: een derde die door beide partijen wordt vertrouwd. Het enige verschil is dat je asymmetrische encryptie gebruikt, zonder decryptie.
 
Ozzie PHP

Ozzie PHP

01/12/2014 15:17:22
Quote Anchor link
>> Ozzie, zó ver reikt mijn begrip van servers al wel hoor ;-)

Hehe, daar twijfelde ik niet aan, maar het was even om mijn verhaal duidelijk te maken.

Ik snap wel wat je bedoelt, maar omdat de servers onderling met elkaar kunnen praten vraag ik me af of je op deze manier extra veiligheid inbouwt.

Even ervan uitgaande dat iemand op je webserver inbreekt, dan staat ergens op die server een stukje code om de system-wide key op te halen. Weliswaar staat de key zelf er dan misschien niet op, maar wel de code om 'm op te halen. Dus mijn vraag is wat je daar dan mee opschiet, hooguit dat je het de hacker wat lastiger maakt omdat die nu moet zoeken naar een stukje code in plaats van een key.
 
Ward van der Put
Moderator

Ward van der Put

01/12/2014 15:55:11
Quote Anchor link
We zijn het er allemaal wel over eens hoor: buiten de root opslaan is altijd veiliger.

Ik heb het topic geopend omdat ik me afvroeg hoe je het nog veiliger kunt maken: zelfs niet eens op dezelfde webserver opslaan.

In mijn eerste opzet staat de sleutel gewoon bij de databaseconfiguratie, zoals databasewachtwoord, maar dáár wil ik de sleutel liever weg hebben.
 
Ozzie PHP

Ozzie PHP

01/12/2014 15:58:34
Quote Anchor link
Ik snap wel wat je bedoelt, maar de vraag is of het zinvol is. Hoe je het ook wendt of keert, je server heeft de key nodig, dus zal deze of aanwezig moeten zijn op de server, of er zal code aanwezig zijn om de key op te halen. En dat is eigenlijk wat ik bedoelde te zeggen. Op het moment dat een hacker op je server kan komen ben je het haasje. Ik zou niet weten hoe je dat zou moeten oplossen.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/12/2014 19:41:06
Quote Anchor link
Een andere optie is om een eigen PHP extensie te schrijven, deze compileren et voila ;-)
 
Ozzie PHP

Ozzie PHP

01/12/2014 21:18:39
Quote Anchor link
Ger, hoe bedoel je dat? Ik lees wat je schrijft, maar ik begrijp er niks van :)
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.