Funzione di serializzazione PHP – Aggiunta di dati serializzati a mysql e quindi recupero e visualizzazione

Voglio sapere se la function di serializzazione PHP è sicura al 100%, anche se memorizziamo i dati serializzati in un database e vogliamo fare qualcosa dopo averlo recuperato, sarà un bel modo.

Ad esempio: – Ho un sito Web con diversi privilegi utente, ora voglio memorizzare le impostazioni delle autorizzazioni per un particolare privilegio nel mio database (Questi dati che voglio memorizzare devono essere fatti tramite la function di serializzazione php), ora quando un utente registra in voglio recuperare questi dati e impostare i privilegi per il cliente.

Ora sto bene per fare questa cosa, quello che voglio sapere è, se è il modo migliore per fare o qualcosa di più efficiente può essere fatto.

Inoltre, stavo seguendo il manuale di php e ho trovato questo codice, qualcuno può spiegarmi un po 'cosa sta succedendo in questo codice: – [Specialmente perché viene usato base64_encode?]

<?php mySerialize( $obj ) { return base64_encode(gzcompress(serialize($obj))); } myUnserialize( $txt ) { return unserialize(gzuncompress(base64_decode($txt))); } ?> 

Anche se qualcuno può fornirmi il proprio codice per mostrarmi di fare questa cosa nel modo più efficiente.

    Ho un problema, ho così tanti campi da prendere come privilegi, ora per dire che ho 45 moduli per gli amministratori e 30 moduli per gli utenti di prendere sotto autorizzazioni / privilegi. In futuro (mentre lavoro costantemente a questo progetto) aggiungerò sempre più moduli, diciamo circa altri 100, quindi come potrò definire i privilegi. E anche io sto aggiungendo un module per creare gruppi personalizzati con privilegi personalizzati. Come lo realizzerò, tenendo presente l'efficienza? Per favore aiuto: |

    NON VEDER TO UTILIZZARE I DATI SERIALIZZATI PER LA RICERCA

    Il mio database: –

    Struttura del database

    Contenuto del database

    Nota: – I privilegi degli utenti saranno concessi tramite: privileges_level

    Nota: – In privileges_permissions voglio aggiungere tutti i privilegi in una forma serializzata.

    Grazie.

    Voglio sapere se la function di serializzazione PHP è sicura al 100%

    questa function non ha nulla a che fare con la sicurezza. È solo un modo per rappresentare una struttura dati complessa come una string. È tutto.
    La sicurezza del database è un'altra questione, completamente indifferente alla fonte della forma dei dati.

    se archiviamo i dati serializzati in un database e vogliamo fare qualcosa dopo averlo recuperato, sarà un bel modo.

    Sicuramente NO
    In questo modo stai rovinando l'intera idea dei database relazionali , che si suppone utilizzino.
    Un dato dovrebbe essere presente nel database nella forma Normale , significa atomico – each entity framework; occupa una cella distinta. Non un insieme di dati non accessibili non strutturati senza possibilità di stabilire alcuna relazione con altri dati.

    cosa sta succedendo in questo codice

    niente di sensato.

    Per rispondere alla domanda dal titolo

    • Non archiviare i dati serializzati in mysql
    • Crea una tabella / struttura di tabelle che rappresenti la struttura dati della tua applicazione, mantenendo tutti i bit di dati separati e accessibili.

    NON VEDER TO UTILIZZARE I DATI SERIALIZZATI PER LA RICERCA

    Questa è solo una delusione, dalla mancanza di esperienza.

    Bentornato tra un paio di mesi, con una domanda "aiutami a rifare il mio setup! Sta andando fuori controllo!"

     Serialization can be attempted or can be a good approach to store user settings or preferences – you only really need to store the settings that differ from the default values. Serialization is good approach for just storing and getting back data not for searching on the serialized column or update individual value in the column. If you want to just store and update user settings as on change and just deserialize nothing from php and nothing to do with the values in the column much specifically. Go for Serialization. It can in no ways help you maintain relationship with serialized data. The moment you require to make the data serialized meaningful or relational. You need to normalize. 

    Se l'applicazione è veramente senza schema e ha molti parametri facoltativi che non compaiono in each record, serializzare i dati in una colonna può essere un'idea migliore rispetto a disporre di molte colonne aggiuntive che sono NULL.

    Questo risponderà alla tua domanda

    Devi stare attento:

    1) Se si apportno costantemente piccoli aggiornamenti a un pezzo di dati in un blob molto grande, lo sforzo a cui MySQL deve andare è notevolmente aumentato.

    2) perdita di funzionalità: penso che non ne hai bisogno per le impostazioni dell'utente.

    Tutto ciò che è convertibile nella sua forma originale non è mai fatto per scopi di sicurezza.

    Serialize è uno dei methods più convenienti per trasferire la rappresentazione specifica di php dell'object o dell'arrays in un text in modo da poterlo salvare in un file nativo o trasferirlo su TCP

    base64_encoding ha anche uno scopo simile, utile se hai bisogno di trasferire binari da una piattaforma a un'altra piattaforma (ad esempio se stai costruendo un'app che consente agli utenti di caricare immagini sul tuo server)

    gz * compress è semplicemente una function di compressione delle stringhe.

    In conclusione, se vuoi "proteggere" i tuoi dati, usa un hash unidirezionale come sha o md5.

    http://php.net/manual/en/function.hash.php

    Per memorizzare i privilegi, è meglio creare una tabella separata per memorizzare i nomi e l'ID dei privilegi e, se si desidera abilitare più privilegi per ciascun utente, creare una tabella di bridging per mappare tra gli utenti e i loro privilegi. Se un utente ha un privilegio, aggiungi semplicemente un privilege_id in each utente nella tabella degli utenti.

    — MODIFICARE

    Se disponi di molte regole personalizzate per ciascun privilegio, procedi e fallo comunque, 100 è un numero molto gestibile anche dalla configuration di base dell'installazione di mysql, nessun problema.

    Un'idea è quella di creare un'altra tabella che mappa una serie di privilegi a un gruppo e se si può avere un utente che ha accesso a uno o più gruppi, la tabella di mapping sarà da utente a gruppo.

    Ti suggerisco di provare MongoDB

    È un database orientato ai documenti. È ansible memorizzare e recuperare direttamente l'object o l'arrays. Non c'è bisogno di serializzare.