Come si modifica in modo sicuro una voce del database in base all'ID in un sistema di amministrazione?

0

Questa è più una domanda concettuale perché il modo in cui lo sto facendo sarebbe abbastanza sicuro per i miei scopi (educativo). Ho creato un semplice pannello di amministrazione che visualizza un database di scelte di magazzino come input:

{% for pick in picks %}
        <tr data-post-id="{{i.id}}">
            <td class="symbol"><input type="text" value="{{pick.symbol}}"></td>
            <td class="buy_date"><input type="text" value="{{pick.buy_datetime}}"></td>
            <td class="buy_price"><input type="text" value="{{pick.buy_price}}"></td>
            <td class="sell_price"><input type="text" value="{{pick.sell_price}}"></td>
            <td class="quantity"><input type="text" value="{{pick.buy_quantity}}"></td>
            <td class="current_price"><input type="text" value="{{pick.current_price}}" disabled></td>
            <td class="save"><button>save</button></td>
        </tr>
{%endfor%}

Nel pannello, puoi modificare la singola riga e salvarla nel database tramite una richiesta Ajax basata sul post-id dei dati. Poi mi sono reso conto che se un utente malintenzionato era in grado di aggirare il sistema di accesso, poteva modificare qualsiasi riga della tabella cambiando il data-post-id nel proprio browser? In tal caso, che altro posso fare per limitare ciò che può essere modificato e assicurarsi che sia modificato solo ciò che si intende modificare?

    
posta 28.03.2015 - 02:12
fonte

1 risposta

1

Per la protezione casuale, puoi cancellare alcuni campi di identificazione (incluso l'ID) e includere l'hash nella pagina. Quando la pagina viene pubblicata, si cancellano nuovamente i campi e li si confronta con l'hash memorizzato nella pagina. Assicurati che sia un hash salato in modo che sia difficile per l'utente malintenzionato ricreare l'algoritmo hash e creare il proprio hash falso.

Per una protezione migliore, crittografare l'ID prima di renderlo nella pagina e decrittografarlo quando la pagina viene sottoposta a POST.

Ulteriori letture
Prevenire la manomissione dei campi nascosti in Django
< a href="http://mvcsecurity.codeplex.com/"> Estensioni di sicurezza MVC

    
risposta data 28.03.2015 - 03:42
fonte

Leggi altre domande sui tag