ID-uri encriptate pe URL-uri

In acest moment toate ID-urile se trimit pe URL (sau pe POST, unde este cazul) in clar.

Ar trebui trimise encriptat astfel incat sa nu se vada nici un ID din baza de date, la client.

Exista deci doua functii:

  • USecu::enc() – encripteaza ID-ul dat
  • USecu::dec() – decripteaza cheia data

Vezi cod pentru documentatia aferenta celor doua functii.

Scenariu de utilizare #1: dorim sa nu se mai vada ID-ul in clar pe link-ul de stergere factura.

In index:

$model->Locked ?'javascript:void(0)' :['delete', 'id' => USecu::enc($model->id)]

In actionDelete :

if (!$model = $this->findModel(USecu::dec($id))) {

(...)

CfoLogger::register(
  ($records == Invoice::RECORDS_SALES) ?CfoLogger::ACTION_CUSTOMER_INVOICE :CfoLogger::ACTION_SUPPLIER_INVOICE,
  CfoLogger::ACTIONTYPE_DELETE,
  ['id' => USecu::dec($id)]
);

 

Scenariu de utilizare #2: dorim sa nu se mai vada ID-ul in clar pe link-ul de stergere factura SI MODELUL EXTINDE MActiveRecord

MActiveRecord implementeaza deja functiile de encriptare si decriptare astfel incat nu mai este nevoie sa facem explicit apeluri la enc() si dec(), deci DACA SI NUMAI DACA modelul extinde MActiveRecord, facem ca mai jos.

In index:

$model->Locked ?'javascript:void(0)' :['delete', 'id' => $model->idEncrypted]

In actionDelete:

// nimic, aici este magia !
// daca ai insa chestiuni aditionalde de factut cu ID-ul, 
// atunci asta se scrie in clar. De exemplu:

CfoLogger::register(
 ($records == Invoice::RECORDS_SALES) ?CfoLogger::ACTION_CUSTOMER_INVOICE :CfoLogger::ACTION_SUPPLIER_INVOICE,
 CfoLogger::ACTIONTYPE_DELETE,
 ['id' => USecu::dec($id)]
);

Vezi sectiunea de listare facturi pentru exemplu de implementare.

TESTEAZA CU MARE ATENTIE TOATE FUNCTIONALITATIE IMPACTATE DE ACEASTA MODIFICARE (ADICA PESTE TOT UNDE FOLOSESTI ID-UL)

About

Software Development Manager, Architect

Leave a Reply

Your email address will not be published. Required fields are marked *

[TOP]