Alternatief voor base64

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Guido  -

Guido -

05/01/2024 21:11:03
Quote Anchor link
Hoi,

Ik stuur voor validatie-redenen een gecodeerde ID (reeks cijfers) mee met mijn contact formulier, daarvoor gebruik ik base64. Echter is deze functie niet toegestaan binnen het CMS wat ik gebruik (WordPress). Dus ik ben op zoek naar een alternatief. Nu kwam ik md5 tegen, alleen lees ik op diverse fora dat dit een one-way encryptie is en je dit niet kunt decrypten.. Kan iemand mij uitleggen hoe je de hash dan weer omzet naar een reeks cijfers, of hoe dit dan wel gebruikt moet worden? Een andere alternatief is ook welkom.

Guido
 
PHP hulp

PHP hulp

21/12/2024 16:46:09
 
- Ariën  -
Beheerder

- Ariën -

05/01/2024 21:13:24
Quote Anchor link
Wat zijn de eisen waar je codering aan moet voldoen? Moet er een eigen sleutel bij zitten om het te kunnen decoderen?

Verder is er niks met base64. Al vraag ik mij af hoe je bedoelt dat het niet toegestaan is?
 
Adoptive Solution

Adoptive Solution

05/01/2024 21:19:01
Quote Anchor link
Een hash is geen encryptie, in welke richting dan ook.

Kijk hier eens :

https://github.com/brainfoolong/cryptojs-aes-php
 
Guido  -

Guido -

05/01/2024 21:51:11
Quote Anchor link
Ik wil de variabele omzetten naar willekeurige tekens, niks speciaals. Daarom vond ik base64 prima.

base64 is niet toegestaan binnen WordPress omdat het vrij eenvoudig te misbruiken is.. zegt men.

Guido
 
Adoptive Solution

Adoptive Solution

05/01/2024 22:17:15
 
- Ariën  -
Beheerder

- Ariën -

05/01/2024 22:21:15
Quote Anchor link
Guido - op 05/01/2024 21:51:11:

base64 is niet toegestaan binnen WordPress omdat het vrij eenvoudig te misbruiken is.. zegt men.

Wat is je bron? En op wat voor misbruik doel je precies?
 
Guido  -

Guido -

05/01/2024 22:25:43
Quote Anchor link
Ik kies dan voor de hash() functie, maar kom terug bij een eerdere vraag: hoe on-hash ik dit? Ik lees dat dit one-way is. Maar hoe kan ik die versleutelde waarde dan gebruiken?
 
- Ariën  -
Beheerder

- Ariën -

05/01/2024 22:29:45
Quote Anchor link
Unhashen bestaat niet.
Adoptive Solution op 05/01/2024 21:19:01:
Een hash is geen encryptie, in welke richting dan ook.
 
Guido  -

Guido -

05/01/2024 22:38:29
Quote Anchor link
Maar leg dan eens uit hoe dit werkt. Je hashed een waarde en die sla je bv op in de database. Wat heb je aan die waarde als je die later niet kunt on-hashen?

Guido
 
- Ariën  -
Beheerder

- Ariën -

05/01/2024 23:06:19
Quote Anchor link
Die vergelijk je dan met de ingevulde waarde die je op dezelfde manier hashed, en dan weet je dat ze gelijk zijn.
 
Guido  -

Guido -

06/01/2024 00:17:43
Quote Anchor link
Hoi Arien,

Logisch.. niet aan gedacht het zo te doen!

Je vroeg eerder naar de bron.. Het bezwaar is niet persé misbruik, maar verbergen van mogelijk verkeerde code of tekst:
https://www.pluginvulnerabilities.com/2017/10/30/base64-obfuscation-used-in-wordpress-plugins-code-that-emails-details-of-website-to-developer/

Guido
 
- Ariën  -
Beheerder

- Ariën -

06/01/2024 00:40:26
Quote Anchor link
Wat houdt je tegen om het te gebruiken, als het in een andere context gebruikt cq. misbruikt wordt?
 
Rob Doemaarwat

Rob Doemaarwat

06/01/2024 01:15:18
Quote Anchor link
Base64 is geen encryptie. Iedereen met een beetje verstand van zaken kan gokken dat die riedel een base64 gecodeerd stukje data is, het eens decoderen, en misschien de boel aanpassen om dingen voor elkaar te krijgen die je eigenlijk niet bedacht had. Het liefst geef je helemaal geen "belangrijke data" op deze manier mee, maar sla je die bijvoorbeeld gewoon op in de session. Anders kun je in ieder geval "pro" gaan bijvoorbeeld via https://www.php.net/manual/en/function.openssl-encrypt.php en https://www.php.net/manual/en/function.openssl-decrypt.php gebruiken om de boel te coderen en later weer te decoderen.
 
- Ariën  -
Beheerder

- Ariën -

06/01/2024 01:26:47
Quote Anchor link
We kunnen de vraag ook kort stellen: Mag de bezoeker weten wat je te te verbergen hebt in die string?
 
Ozzie PHP

Ozzie PHP

06/01/2024 01:48:04
Quote Anchor link
Encryptie en decryptie horen bij elkaar. Het is tweerichtingsverkeer.

Hashing is éénrichtingsverkeer.

Stel je hebt de string "geheime tekst". Via encryptie maak je daarvan "ABCXYZ123" (fictief). Via decryptie maak je vervolgens van "ABCXYZ123" weer "geheime tekst". Dus aan de hand van de geëncrypte string "ABCXYZ123" kun je de originele string "geheime tekst" weer herleiden.

Bij een hash werkt het anders. De string "geheime tekst" verandert dan in "XZYDEF123" (fictief). Uit "XZYDEF123" kan je niks meer afleiden. Het is onmogelijk om te weten wat de originele string was. Om te weten of de gehashte string "XZYDEF123" bij "geheime tekst" hoort, ga je "geheime tekst" opnieuw hashen, en je kijkt of daar de string "XZYDEF123" uit komt. Zo ja, dan was het origineel "geheime tekst". Zo nee, dan was het origineel iets anders.
 
Guido  -

Guido -

06/01/2024 12:35:02
Quote Anchor link
Hartelijk bedankt voor jullie reacties! Alles is duidelijk.

Ter info zal ik even uitleggen hoe het werkt bij mij.

Mijn formulier toont een willekeurige som captcha.
Ik voeg de uitkomst ook toe als hidden input.
Tijdens versturen wordt die uitkomst in database opgeslagen (dmv een WordPress "transient").
De invoer van invuller wordt vergeleken met uitkomst in database.
Daarna wordt de "transient" verwijderd uit database.
Doordat de "transient" niet meer bestaat, is de inzending niet bruikbaar voor een repeater bot die $_post hergebruikt.
(ik gebruik reeds de Post/Redirect/Get methode)

Guido
 
Ward van der Put
Moderator

Ward van der Put

06/01/2024 12:53:39
Quote Anchor link
Guido - op 06/01/2024 12:35:02:
Ik voeg de uitkomst ook toe als hidden input.
Tijdens versturen wordt die uitkomst in database opgeslagen [...]

Dan is de uitkomst uitsluitend opslaan in de sessie veiliger én efficiënter.
 
Guido  -

Guido -

06/01/2024 13:14:48
Quote Anchor link
PHP sessies zijn niet toegestaan binnen WP, daarvoor hebben ze "transients" bedacht.

Guido
 
Ozzie PHP

Ozzie PHP

06/01/2024 17:18:54
Quote Anchor link
>> Ik voeg de uitkomst ook toe als hidden input.

Waarschijnlijk begrijp ik je verkeerd, maar zeg je nu dat je de uitkomst (datgene wat de persoon die het formulier verstuurt als uitkomst moet invullen) ook meestuurt in het formulier zelf?

Als je inderdaad de uitkomst meestuurt in het formulier, dan is dat ongeveer hetzelfde alsof je je voordeur op slot draait en de sleutel onder de mat legt. :-)
 
Guido  -

Guido -

07/01/2024 00:58:44
Quote Anchor link
Hoi,

Zo doe ik het wel, maar dus gecodeerd. Nav deze thread zal ik de uitkomst als hash meesturen. Maar zonder een transient (zie eerdere reply) is het onmogelijk om formulier succesvol te versturen.

Guido
 
Ozzie PHP

Ozzie PHP

08/01/2024 16:00:29
Quote Anchor link
>> Zo doe ik het wel, maar dus gecodeerd.

Let op. Als je een 'bekende' manier van hashen gebruikt, dan heeft het weinig zin. Dan kan via een 'dictionary' (voor uitleg zoek via Google naar "hashing dictionary attack") alsnog makkelijk het juiste antwoord worden bepaald.

Ik zou, als je dan toch via een database werkt, het anders doen.

In het hidden input field van het formulier zou ik een random string opslaan. Die string sla je ook op in de database met daarbij een tweede veld waarin je de uitkomst opslaat.

Als je het op deze manier doet, is de uitkomt op geen enkele manier te herleiden uit je hidden input field.
 

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.