Ga naar inhoud
Log in om dit te volgen  
Gast

Kleine Vragen Topic #4

Aanbevolen berichten

Heeft iemand een idee hoe je Web Push notifications op kan zetten met PHP? Iemand een goede duidelijke tutorial hiervoor? Want ik zie door de bomen het bos niet meer. En moet ik zelf een push-server opzetten, of kan ik direct gebruik maken van de end-points van Mozilla/Chrome etc?

Iemand die wat uitleg kan geven?

Deel dit bericht


Link naar bericht
Delen op andere sites
Ben ik weer, met een query die niet werkt:

Dit werkt wel:
Codeblok:
1
2
3
4
5
6
7
8
SELECT u.name, u.surname, n.id, n.title AS title, n.message_short, n.message, n.date_posted, n.date_editted, n.active, n.author
        FROM news n
            INNER JOIN users u ON n.author = u.id
        WHERE n.active = 1
        AND n.deleted=0
        AND n.date_posted <= NOW()
        ORDER BY n.date_posted DESC
        LIMIT 4


Maar als ik nu uit de uploadstabel (via de upload_items tabel) de filename wil ophalen, krijg ik heel andere en dus dubbele resultaten?

Codeblok:
1
2
3
4
5
6
7
8
9
10
11
12
SELECT u.name, u.surname, n.id, n.title AS title, n.message_short, n.message, n.date_posted, n.date_editted, n.active, n.author
        FROM news n
            INNER JOIN users u ON n.author = u.id
            INNER JOIN uploads_items ui ON ui.KindID = n.id
            INNER JOIN uploads up ON up.ID = ui.UploadID
            
        WHERE n.active = 1
        AND ui.Featured = 1
        AND n.deleted=0
        AND n.date_posted <= NOW()
        ORDER BY n.date_posted DESC
        LIMIT 4


Hoe kan dat?
UPDATE!!!!!!!! WANT HET GEFIXX0RED! JOEHEI!!!!
Heel simpel, door deze query te gebruiken:
Codeblok:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT m.name, m.surname, n.id, n.title AS title, n.message_short, n.message, n.date_posted, n.date_editted, n.active,

(SELECT up.filename FROM
uploads up INNER JOIN uploads_items ui ON
up.ID = ui.UploadID
WHERE ui.KindID = n.id
AND ui.Featured = 1
AND Uploadtype_ID = 7 LIMIT 1) AS filename

FROM nieuws n
INNER JOIN members m ON n.author = m.id
WHERE n.active = 1
AND n.deleted=0
AND n.date_posted <= NOW()
ORDER BY n.date_posted DESC
LIMIT 4


Samen met hulp van iemand op een ander forum dit gefabriceerd.
Hiephoi, ik ben weer blij smiley

Nu nog even uitvogelen waar die subselect nou voor nodig is. Want dat had ik nog niet verwacht icm met een JOIN smiley.

Deel dit bericht


Link naar bericht
Delen op andere sites
Ralphh (link):
Hoe kun je in HTML of CSS meer witruimte toevoegen tussen tekst?


Noem eens een voorbeeld? Dit kun je namelijk op verschillende manieren oplossen. Wat is je huidige HTML?

Deel dit bericht


Link naar bericht
Delen op andere sites
Milan (link):
Klik om eerdere quotes te tonen


line-height: 20px; (bijvoorbeeld)


Yes thanks smiley

Deel dit bericht


Link naar bericht
Delen op andere sites
Afstanden-matrixxen zijn erg tof, net zoals deze:
https://blog.rijdendetreinen.nl/wp-content/uploads/2017/05/afstandenmatrix-2017-05.csv

Maar heeft iemand een idee hoe je dit het beste kan verwerken in PHP? Het lijkt mij logisch om dit op te slaan met drie velden:
Beginstation - eindstation - afstand - IngangsDatum
Klopt dat? Of kan dat zelfs beter? En hoe kan je zoiets netjes uitlezen?

Deel dit bericht


Link naar bericht
Delen op andere sites
Ik heb de volgende URL:

http://adsb.domein.nl:8081/bla/bla.html

En voor deze URL wil ik graag een aantal instellingen maken die ervoor zorgen dat je alleen het volgende in hoeft te typen:

http://adsb.domein.nl

In DA heb ik nu de volgende SRV record ingesteld om de poort weg te werken:

_piaware._tcp.adsb SRV 0 5 8081 adsb.domein.nl.

piaware is een naam die ik willekeurig heb gekozen; ik weet niet zeker of dit mag. Voor een andere toepassing heb ik een vergelijkbare SRV record die wel werkt (andere poort etc, uiteraard). Ik heb mijn A record voor adsb.domein.nl al ingesteld en deze werkt ook goed. Iemand enig idee hoe ik de rest kan maken?

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
Afstanden-matrixxen zijn erg tof, net zoals deze:
https://blog.rijdendetreinen.nl/wp-content/uploads/2017/05/afstandenmatrix-2017-05.csv

Maar heeft iemand een idee hoe je dit het beste kan verwerken in PHP? Het lijkt mij logisch om dit op te slaan met drie velden:
Beginstation - eindstation - afstand - IngangsDatum
Klopt dat? Of kan dat zelfs beter? En hoe kan je zoiets netjes uitlezen?

Iemand?

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
Klik om eerdere quotes te tonen

Iemand?
Dat lijkt me de meest logische oplossing inderdaad. Je krijgt 3942 - 394 = 154.842 rijen, dus dat is ook nog wel te overzien.

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
Nu het uitlezen nog...... Daar loop ik nog op vast.


Op welke manier bedoel je uitlezen?

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
Nu het uitlezen nog...... Daar loop ik nog op vast.


Het is een CSV, dus gewoon plaintext. Split eerst op een newline en dan op een komma. Dan heb je een multidimensionale array die er zo uitziet:

Codeblok:
1
2
3
4
5
6
[
    0 => [ ehv, bk, mst, .... ],
    1 => [ ehv, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, .... ],
    2 => [ anderstation, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, .... ],
    .....
]

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
Dat is zo...
Maar uiteindelijk wil ik dus wel eenvoudig kunnen ophalen wat de afstand tussen a en b is.


Ja, je hebt dan een multi-dimensionale array zoals Milan dan zegt. De eerste rij is alle stations, dus daar zoek je dan je station in. Stel Eindhoven zou op positie 15 staan in de eerste rij, dan weet je dus dat de 15e rij voor station Eindhoven is.

Vervolgens wil je naar Tilburg, wat misschien 25 in de eerste rij is. Dan weet je dat je de 25e waarde moet hebben uit de 15e rij om de afstand tussen tilburg en eindhoven te krijgen.

In pseudocode:

Codeblok:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$matrix = [
    [Station, ac, ah, ahp, ahpr, ahz, ...]
    [ac,      XX, 1,  2,   3,    4,  ...]
    [ah,      1,  XX, 2,   3,    4,  ...]
    [ahp,     1,  2,  XX,  3,    4,  ...]
    [ahpr,    1,  2,  3,   XX,   4,  ...]
    [ahz,     1,  2,  3,   4,    XX, ...]
    [...,     .., .., ..,  ..,   .., ...]
]


$stations = array_values($matrix[0]);

$stationA = array_search(ahpr); // 4, want op index 4
$stationB = array_search(ah); // 2, idem

$distance = $matrix[$stationA][$stationB]; // $matrix[4][2], dus afstand is 2

Deel dit bericht


Link naar bericht
Delen op andere sites
Aarclay (link):
Nu het uitlezen nog...... Daar loop ik nog op vast.
Wat @Rik hierboven zegt. Andere optie is om het in een database te proppen (waar ik eigenlijk al van uitging), dan kun je gewoon doen SELECT distance FROM distances WHERE a = AMS AND b = EHV ofzo.

Deel dit bericht


Link naar bericht
Delen op andere sites
Lang geleden dat hier iets gepost is smiley

Heeft iemand ervaring met user-data geëncrypt opslaan? Echter dan wel dat deze data op te halen is met 2 verschillende wachtwoorden? Ik wil namelijk voor scouting wat medische gegevens gaan opslaan online en deze data encrypten, maar de ouders en ikzelf moet bij die data kunnen. Wat is een goede manier om dit binnen PHP toe te passen?

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Milan (link):
Lang geleden dat hier iets gepost is smiley

Heeft iemand ervaring met user-data geëncrypt opslaan? Echter dan wel dat deze data op te halen is met 2 verschillende wachtwoorden? Ik wil namelijk voor scouting wat medische gegevens gaan opslaan online en deze data encrypten, maar de ouders en ikzelf moet bij die data kunnen. Wat is een goede manier om dit binnen PHP toe te passen?


Waarom niet zelfde wachtwoord gebruiken?
Je hebt één passphrase om je data te encrypten (en decrypten) zoals het in database staat
En dmv php decrypt je dit dan aan de hand van een opgegeven passphrase (kunnen dus meerdere zijn)

Deel dit bericht


Link naar bericht
Delen op andere sites
Jessee (link):
Klik om eerdere quotes te tonen


Waarom niet zelfde wachtwoord gebruiken?
Je hebt één passphrase om je data te encrypten (en decrypten) zoals het in database staat
En dmv php decrypt je dit dan aan de hand van een opgegeven passphrase (kunnen dus meerdere zijn)


Maar hoe werkt dat dan met meerdere wachtwoorden? Je hebt in principe toch maar 1 encryption key..

Niet hetzelfde wachtwoord komt omdat we allemaal eigen accounts hebben.

Of bedoel je een private key maken en die afzonderlijk encrypten voor dat account en mijn account?

Deel dit bericht


Link naar bericht
Delen op andere sites
Als je het wilt encrypten en ook wilt uitlezen (neem aan dat iemand zijn gegeven nog kan uitlezen), dan moet die encryption-key op de server staan.

Ik vraag mij af waarom het encrypted moet zijn? Met een RBAC-systeem kan je toch ook bepaalde mensen rechten geven om het in te zien? Want wat als de sleutel verdwenen is?

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Milan (link):
Klik om eerdere quotes te tonen


Maar hoe werkt dat dan met meerdere wachtwoorden? Je hebt in principe toch maar 1 encryption key..

Niet hetzelfde wachtwoord komt omdat we allemaal eigen accounts hebben.

Of bedoel je een private key maken en die afzonderlijk encrypten voor dat account en mijn account?


Één pk op de server.
En alle users kunnen die data decrypten met hun password, die sturen ze naar de server. De server checkt of password valid is, zo ja dan decrypt hij de data met de servers PK (voor iedereen is het dezelfde servers PK, maar om die te verkrijgen (ze krijgen hem nooit zelf te zien) moet hun password goed zijn)

Deel dit bericht


Link naar bericht
Delen op andere sites
Jessee (link):
Klik om eerdere quotes te tonen


Één pk op de server.
En alle users kunnen die data decrypten met hun password, die sturen ze naar de server. De server checkt of password valid is, zo ja dan decrypt hij de data met de servers PK (voor iedereen is het dezelfde servers PK, maar om die te verkrijgen (ze krijgen hem nooit zelf te zien) moet hun password goed zijn)


Maar hoe voorkom je dan dat als de server gehackt wordt deze data in handen van de hackers valt? Het gaat niet om gevoelige medische data maar ik wil toch een veilige implementatie hebben.

Deel dit bericht


Link naar bericht
Delen op andere sites
Gast
Milan (link):
Klik om eerdere quotes te tonen


Maar hoe voorkom je dan dat als de server gehackt wordt deze data in handen van de hackers valt? Het gaat niet om gevoelige medische data maar ik wil toch een veilige implementatie hebben.


Als je server gehackt wordt heb je sowieso problemen.

Deel dit bericht


Link naar bericht
Delen op andere sites
@Milan Hier zijn public en private keys voor gemaakt! Ik heb een proof of concept voor je gemaakt. Het werkt als volgt:

Tijdstip A
- user 1 registreert zich op je website
- je genereert een private key en een public key voor deze user (met openssl_pkey_new())
- je slaat de public key gewoon op zoals ie is, dus niet encrypted
- je encrypt de private key die je zojuist hebt aangemaakt met het wachtwoord van de user (met openssl_encrypt())
- de geëncrypte private key sla je op in je database

Tijdstip B
- user 2 registreert zich; dit is bijvoorbeeld een admin-user, daarmee doe je hetzelfde als met user 1 hierboven

Tijdstip C
- iemand slaat gevoelige informatie op (in mijn PoC is dat "Lennard heeft bloedgroep A") en encrypt dat met de public key van de klant
- het resultaat sla je op in de database

Tijdstip D
- user 1 (dus de klant) logt op je site in met zijn wachtwoord
- wachtwoord sla je op in $_SESSIE (je kunt ook een hash van dat wachtwoord ofzo gebruiken)
- je decrypt de private key van de user met het wachtwoord van de user
- je gebruikt de gedecrypte private key van de user om de opgeslagen hash met gevoelige informatie te decrypten
- et voila, je kunt de informatie zien

Tijdstip E
- user 2 (dus de admin) logt op je site in met zijn wachtwoord
- wachtwoord sla je op in $_SESSIE (je kunt ook een hash van dat wachtwoord ofzo gebruiken)
- je decrypt de private key van deze user (= admin) met het wachtwoord van de user
- je gebruikt de gedecrypte private key van de user om de opgeslagen hash met gevoelige informatie te decrypten
- et voila, je kunt de informatie zien

Volgens mij klopt het zo wel aardig. Check het wel even goed voor je het gebruikt, misschien zie ik iets heel obvious over het hoofd en is het zo lek als een mandje. smiley

Codeblok:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
$klant_privkey
= -----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC6xVTznrBu+Dml
p+w5QWuRkL+0JRRvypjWLD88qyosEBZ0isEiOgolBb7HJzfkRtZMpaG4/xSSZLa/
XWM/m+Me9oOA2GI+5E5rh6hIegZglwdWpQsd7hEKB8yZIv65Hf9Rwy8RU59AVJPU
BIfjlYxbQtokGMPJQo637Bs28egff8XlAmVYMltdwacBRYVFwxoBOGfWeXlWoC/o
gdr4acZV3LaHlGA0MJJkXQCaKk6oFdU2UdeaEhZ8nLCOEQWm8I9V4ZIrTQWrC2z1
EXC3wmxEyIr37uPXKGAWQ2LPcS3zFTUhh2CQlB8jIiKieBW2p7oqPg/UvscFkioJ
tkuPoIRLAgMBAAECggEADh77VEwMNOepnB+9GXsbwe66v8kJ6YXc1lyUD2c1kg1J
VVhkT80plTEBApexfx3n9/WR66XFjWf19TP/XADSRDYJLUWu7+hdEX45N/mZ39Wr
ZV6nH4UvXp3GV1GxBpgBBNKIDXxQDxIV9zK8f3WAHipIye/hZacVmUxNpnLVxQPI
BuS1+zNfJXeoGg31o/EA+ywgh/CHBRoZP0pGo4QJiaBWigsG/fnWvvYMI0uARrrL
JqTKpKlPjooe3FaWTO5pW3IRXItAe0n7ZdyTyNb6X05p8OBvSVDKjqPJBLCfNXlN
Y60vzKRRgjtKC5gKVeSPwPtUPktYctnZdJTx/iiKgQKBgQDbRpzcjUa4IffW8X1+
RdMQ9C4669Hs3Q4IzRxobBR85PNR+Zm9MnIg85I4iiXzgDN68u7dEf2jBwqZ0wjA
eGVIZFPw7RbgQ14baPi2leJZUWnCfTNEjeBzjQqKamCkN8c79Sfz02r7DygGl3XL
pR2Oa8UnZfm5K8bUg2g5WXfQwQKBgQDaDROZo9fvcp10bEIt22CQ0UH9LLshwRGy
ENRgN8Y5SYylRWmCC1zCTn9LOOcVjRegF3lwJjqRiThTdwSe5ajdwtN9qng5bE2M
PyswlB5sNou4CPJ7ZFlx6amzBDYaiy2WIfVU+1v4s+P7jUB/Y+YnHibM92SpGAkB
mTGS9JGMCwKBgDV8ifK6e0+a6YuCqGvOuGdgSI6Sy0gNu8ilz5IhGvZEGp4aVkfy
MCidgUNNX2iAEw6gh2dhZg8IPqu68F2SgJIh9t/D1Vqq1B+3gUN4WBgVZcjNJV5J
hUBqXPHadOxZtr2HVVGCdov67HZ/J3qfMhB1dUfg9gMXDI715sxmaHWBAoGAPelY
l1ceCK7SZiwW3k5brMK9qdT5jSv0ikqdAnTTo5Bujr6WpoXzYHhJTGJruoLFIn+H
y4APQSNlCs3QUg2DVPPseNHeMO+/VQLakIB94tvZ7/caYk6r1twxgtK/Seoal3Ys
4mQ8SPFK2jHRDlqfDpxRCAF2Y0yfwgRtPvySFuECgYB1mL99HIBOFUthQ1IfMErx
7tGa37sJx3ug3lqF9Q+OMUW377qAd4rVvaggCnSqJz3pY4kR8BrjreID8ychZt1K
XogZTC2sgcCkPW2yh599fgGyg+Ofynzl5sM05QMzPq6JfrXGgvhV1bOiFpCOJa4W
Bm8pdGVTcuSnaSCUS6OoQw==
-----END PRIVATE KEY-----
;
$klant_pubkey = -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAusVU856wbvg5pafsOUFr
kZC/tCUUb8qY1iw/PKsqLBAWdIrBIjoKJQW+xyc35EbWTKWhuP8UkmS2v11jP5vj
HvaDgNhiPuROa4eoSHoGYJcHVqULHe4RCgfMmSL+uR3/UcMvEVOfQFST1ASH45WM
W0LaJBjDyUKOt+wbNvHoH3/F5QJlWDJbXcGnAUWFRcMaAThn1nl5VqAv6IHa+GnG
Vdy2h5RgNDCSZF0AmipOqBXVNlHXmhIWfJywjhEFpvCPVeGSK00Fqwts9RFwt8Js
RMiK9+7j1yhgFkNiz3Et8xU1IYdgkJQfIyIiongVtqe6Kj4P1L7HBZIqCbZLj6CE
SwIDAQAB
-----END PUBLIC KEY-----
;

# user voert zijn wachtwoord in
$klant_wachtwoord = berenpak12;
# je encrypt de private key van de user met zijn eigen wachtwoord
$klant_privkey_encrypted = openssl_encrypt($klant_privkey, BF-ECB, $klant_wachtwoord);

# opslaan in database:
# - $klant_privkey_encrypted
# - $klant_pubkey


$admin_privkey = -----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC0R6TJJ6jTVK2f
tzkfaHHxsLsNb5pxv3hsjAjo/K1LRnIFzYY2HZUk895xObxjBccqPhN4GcSsLaH4
lrdBzhtQJXjLsvkUhR4kjbu/3tv9w1Wt+WSTCkrt/2f60hyRsNqM0S/+cuGGJHdH
+FXIdS2nacC7AgJV/9T/+7wmEoiIwckubJ2JZYNhZbHWPiYhe8oAljjnk0W6Y2gc
LqGkUOS8Aw/IcRnVg1R7cTxdz7+fB50kyPW4gzUjLKijEdpUGYNnibqWMheLg0oX
xhI+ListTipE1E8gi7uYzlPoTMJbm84DfgCQ+3CyLP1HKRjkuDosN5JScoFhL1bs
QqoA3nupAgMBAAECggEAWlyCszTGwU5zTFfZMO34Fu2/hCeJYTRYlwfFu4pTDiT8
J/5xJBTF2eTGfTg0Pen6fyjoN02rL6Ybxm884aX+OLjfiDJn+KoUhrvn/G8nE1Xi
TzZu++iv0AUxyB2ipj/f+68qgD5y3frPMuq9jKF3Ra+TI+kI5LQ7viceknK9rtWj
VhdWKIdC3gdvRTIiR90xA54I3psnXDH2LpcpKJzZFKtFTTYVVuQ8zEtjZVJ28Tum
YORgKvLGxd6aQtz4nGGSR8bFBJu8VP8iq5M1J+jUfL1T2Fq26s5lH6FygVGHhF7f
QG0KX0CUyJf1JsIu95dvRxNL3kGB5Iv6ommxByTUFQKBgQDj4NqbloDIMb6mq5fH
+JHceFGAmYZ+SkfODXCMr76XFVF++VjJTc0S7h+YQJb1fqR/91/EXlVf8yATgOsS
eN7FUYF+wPkeI0QbMZjrNM2aZxEAQXKUL1v57vi3+xmGVcdqpLlzGnE9M3d7cBQQ
/mMA1FHIGzBGWXT2MpFrZwptbwKBgQDKhw5IzlMImBZaIWtmhaBQXByQvc4DOZN3
c4mcqSYEycSqx7I6B//rjqxpSwYVry2R1oCuXmtC31jmk655CmaHDikdb7O124dL
7mI0AO/vQU+nJNVxLNNkQOTf/pgofGSU4Nenx00wCIzMHKZWfwvIFI1CWiFpgDZj
4uiCvwjMZwKBgCUtVfz0POZsVzJR5F1XjFRvvLxCT9Liw3w2bRpGwc1cSQNyIq4U
51QjTTxFrVs34haOgS1ERqF0xNLpwXAuEAoZFgtb6EimcEIPgWc+Ih0Cm59zDgJn
B5ZrCmDZsnxcGkCnxymkMr1NXDzjOCLdncFQ4lbHOMUBazePYHIpSWY5AoGATxxy
d/4gcTr3gD2Ntn58IOfaQK/jyV60O/TlzExGjZhDOnLHK+P0FA+nSXoE5nOHWXBw
06wOOhEEqQ0HGkD1y8u8Q8Neb6tRLlfwBGBZWRwqASBiP9NCv+aZgOXyid4NbBpo
IyG3BQxR82k9kIwQDhf5FfIfGxb6KAp6yJfW2AECgYA3nWx+Bb40YMZ6mkSU12t/
gigPc8yb6KpgjWtnm6WzkUB4ZNQn7XSeqlivAcGrIUVFfUakz957IarTJNqPWQIM
gOUiZ+vG2qrMHY7Zp2GAKcN+IijX/HYeFfPaEAKJBsdHidhFmw61YP06Kr+x12AN
wRGm85gsB153hseW44enzQ==
-----END PRIVATE KEY-----
;
$admin_pubkey = -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtEekySeo01Stn7c5H2hx
8bC7DW+acb94bIwI6PytS0ZyBc2GNh2VJPPecTm8YwXHKj4TeBnErC2h+Ja3Qc4b
UCV4y7L5FIUeJI27v97b/cNVrflkkwpK7f9n+tIckbDajNEv/nLhhiR3R/hVyHUt
p2nAuwICVf/U//u8JhKIiMHJLmydiWWDYWWx1j4mIXvKAJY455NFumNoHC6hpFDk
vAMPyHEZ1YNUe3E8Xc+/nwedJMj1uIM1IyyooxHaVBmDZ4m6ljIXi4NKF8YSPi4r
LU4qRNRPIIu7mM5T6EzCW5vOA34AkPtwsiz9RykY5Lg6LDeSUnKBYS9W7EKqAN57
qQIDAQAB
-----END PUBLIC KEY-----
;

# admin voert zijn wachtwoord in
$admin_wachtwoord = mamaappelsap1;
# je encrypt de private key van de admin met zijn eigen wachtwoord
$admin_privkey_encrypted = openssl_encrypt($admin_privkey, BF-ECB, $admin_wachtwoord);

# de string die je beveiligd wil opslaan
$te_beveiligen_string = Lennard heeft bloedgroep A;

# de string encrypten om een encrypted ($encrypted) string te krijgen die je in de database kunt zetten
openssl_public_encrypt($te_beveiligen_string, $encrypted, $klant_pubkey);
# opslaan in database: $encrypted

# klant wil data inzien en geeft zijn wachtwoord in:

$wachtwoord = berenpak12;
$klant_privkey_decrypted = openssl_decrypt($klant_privkey_encrypted, BF-ECB, $wachtwoord); # eerst weer achter de private key zien te komen
openssl_private_decrypt($encrypted, $decrypted, $klant_privkey_decrypted); # met private key kun je de encrypted string ($encrypted, staat in de database) decrypten
var_dump($decrypted); # string(26) "Lennard heeft bloedgroep A"

# admin wil data inzien en geeft zijn wachtwoord in:

$wachtwoord = mamaappelsap1;
$klant_privkey_decrypted = openssl_decrypt($admin_privkey_encrypted, BF-ECB, $wachtwoord); # eerst weer achter de private key zien te komen
openssl_private_decrypt($encrypted, $decrypted, $admin_privkey_decrypted); # met private key kun je de encrypted string ($encrypted, staat in de database) decrypten
var_dump($decrypted); # string(26) "Lennard heeft bloedgroep A"


Op die manier kunnen zowel klant als admin de data inzien, elk alleen met hun eigen wachtwoord. Wanneer de server wordt gehackt en de wachtwoorden veilig zijn opgeslagen kan de hacker alleen maar de encrypted data zien. In bovenstaand geval is dat dit:
Codeblok:
1
string(256) "!|nG&2vmFg)7 m8$j5EB[sTdg    {F.&r;C9ixx4t"{r+T2n= d.*!vQ-nK,U[R:YN8{fJ_!`D ulDjzO]+OR4I+~W    "

en daar heb je dus niets aan als hacker. smiley

Lijkt nu ingewikkeld, maar als je er een mooie class voor schrijft dan valt het best wel mee. Lastigste is om even goed te checken of het daadwerkelijk veilig is zo.

toevoeging op donderdag 1 februari 2018, 23:30:45:
update:
Wat je zoekt heet asymmetric encryption; zie bijv. hier voor hetzelfde idee en hier voor (diep) theoretische uitleg.

toevoeging op donderdag 1 februari 2018, 23:33:59:
update 2:
Ah, openssl_seal() over het hoofd gezien, daar werkt het beter mee. Zo te zien kunnen openssl_public_encrypt() en openssl_private_decrypt() maar met 245 bytes omgaan. Zie hier voor een handigere opzet, het idee is hetzelfde als de mijne.

Deel dit bericht


Link naar bericht
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Maak een account aan in onze gemeenschap. Het is makkelijk!

Registreer een nieuw account

Aanmelden

Ben je al lid? Meld je hier aan.

Nu aanmelden
Log in om dit te volgen  

×