sql >> Databasteknik >  >> RDS >> Mysql

Döljer sant databasobjekt-ID i webbadresser

Den här frågan har ställts mycket, med olika ordval (vilket gör det svårt att säga "sök bara på det!"). Detta faktum föranledde ett blogginlägg med titeln, The Omfattande guide till URL-parameterkryptering i PHP .

Vad folk vill göra här

Vad folk borde göra istället

Förklaring

Vanligtvis vill folk ha korta webbadresser som ser slumpmässigt ut. Detta ger dig inte mycket utrymme för att kryptera och sedan autentisera det databaspost-ID som du vill fördunkla. Om du gör det skulle det krävas en minsta URL-längd på 32 byte (för HMAC-SHA256), vilket är 44 tecken när det kodas i base64.

En enklare strategi är att generera en slumpmässig sträng (se random_compat för en PHP5-implementering av random_bytes() och random_int() för att generera dessa strängar) och referera till den kolumnen istället.

Dessutom är hashids trasiga genom enkel kryptoanalys. Deras slutsats säger:

Attacken som jag har beskrivit är betydligt bättre än en brute force attack, så ur en kryptografisk synvinkel anses algoritmen vara trasig, det är ganska lätt att återvinna saltet; gör det möjligt för en angripare att köra kodningen i endera riktningen och ogiltigförklarar egenskap 2 för en idealisk hashfunktion.

Lita inte på det.



  1. Ändra Databas Collation, Ctype i Postgresql

  2. Lyssna på avsnitt 2 av Microsoft Access Podcast

  3. Hur man sorterar i SQL

  4. Kontrollera om en tabell har en främmande nyckel i SQL Server med OBJECTPROPERTY()