Loading
Guida introduttiva a B2C Commerce
Sommario
Seleziona filtri

          Nessun risultato
          Nessun risultato
          Ecco alcuni suggerimenti per la ricerca

          Controlla l'ortografia delle parole chiave.
          Usa termini di ricerca più generici.
          Seleziona meno filtri per ampliare la tua ricerca.

          Cerca in tutta la Guida di Salesforce
          Attacco CSRF (Cross-Site Request Forgery) in B2C Commerce

          Attacco CSRF (Cross-Site Request Forgery) in B2C Commerce

          Ogni storefront contiene alcune richieste protette che richiedono un elevato livello di tutela della sicurezza. Solitamente queste richieste vengono effettuate da acquirenti autenticati che cambiano account o inviano dati personali a un server per completare un'azione. L'utente si aspetta di essere il solo a effettuare tali richieste e unicamente nel momento in cui decide di avviarle.

          L'attacco CSRF (Cross-Site Request Forgery) delude tale aspettativa, ingannando il browser dell'utente e inducendolo a effettuare questa richiesta protetta a sua insaputa, ma con la sua autorizzazione. Salesforce B2C Commerce dispone di una libreria software per la protezione contro gli attacchi CSRF, che consente agli sviluppatori di proteggere le richieste da questo tipo di attacco.

          L'API di protezione contro gli attacchi CSRF utilizza un modello di token di sincronizzazione (Synchronizer Token Pattern) che richiede token di verifica casuali associati alla sessione corrente dell'utente. Quando l'utente invia contenuti dalla pagina, il server è configurato per cercare e convalidare tale token. Se il token non viene convalidato, la richiesta viene rifiutata.

          Per le funzioni aziendali sensibili, l'inclusione di un token di sicurezza obbligatorio nelle richieste HTTP può contribuire ad attenuare gli attacchi CSRF. Infatti, affinché l'attacco vada a buon fine, l'utente malintenzionato deve conoscere il token generato casualmente per una determinata sessione.

          L'API è esposta tramite dw.web.CSRFProtection, che contiene i seguenti metodi.

          • getTokenName(): Restituisce il nome parametro previsto sotto forma di stringa mappata a un token CSRF.
          • generateToken(): Genera in modo sicuro una stringa di token per l'utente corrente. I token sono univoci per ogni chiamata a generateToken.
          • validateRequest(): Esamina la richiesta corrente di un utente per stabilire se contiene un token CSRF valido. Un token è valido se è stato generato per la sessione dell'utente negli ultimi 60 minuti.

          Di seguito è riportato un esempio di un form in ISML che utilizza il framework CSRF per inserire il nome del parametro di token e il valore corrispondente.

          <form action="/submit" method="post">
            ...
             <input name="${dw.web.CSRFProtection.getTokenName()}" value="${dw.web.CSRFProtection.generateToken()"> 
          </form>

          Quindi richiamare CSRFProtection.validateRequest() direttamente nel corpo della funzione o utilizzare un'implementazione middleware per convalidare il token CSRF.

          Per CSRF nei controller JavaScript SiteGenesis, si consiglia di includere CSRFProtection.validateRequest() per la gestione di un'azione di form specifica. Si parla di specificità per azione perché non tutte le azioni inviano dati e richiedono protezione contro gli attacchi CSRF.

          Di seguito è riportato un esempio di utilizzo del metodo direttamente in un controller JavaScript SiteGenesis.

          formResult = cartForm.handleAction({
                   //Add a coupon if a coupon was entered correctly and is active.
                   'addCoupon': function (formgroup) {
                      var CSRFProtection = require('dw/web/CSRFProtection');
                          if (!CSRFProtection.validateRequest()) { //validate the request
                              app.getModel('Customer').logout();  //log the customer out            
                              app.getView().render('csrf/csrf-failed'); //render an error template
                              return null;
                    }
                    var status;
                    var result = {
                    cart: cart,
                    EnableCheckout: true,
                    dontRedirect: true
                    };

          L'architettura SFRA è dotata di una versione middleware di CSRF che esegue controlli CSRF come fase middleware, con una serie di metodi di supporto, inclusi i seguenti.

          • csrfProtection.validateAjaxRequest per convalidare il token CSRF in una richiesta AJAX
          • csrfProtection.validateRequest per convalidare il token CSRF in una richiesta non AJAX
          • csrfProtection.generateToken per generare un token CSRF da utilizzare in un form e successivamente da convalidare con uno dei metodi sopracitati

          Di seguito è riportato un esempio di utilizzo del middleware.

          server.post(
               'Login',
               server.middleware.https,
               csrfProtection.validateAjaxRequest,
               function (req, res, next) {
                  var data = res.getViewData();
                  if (data && data.csrfError) {
                     res.json();
                     return next();
                  }
           );

          CSRF in Business Manager

          Quando si creano cartridge per Business Manager, B2C Commerce aggiunge automaticamente token CSRF a ogni richiesta indipendentemente dal metodo HTTP. Di conseguenza, vengono convalidati solo il nome e il valore del token CSRF utilizzando CSRFProtection.validateRequest() direttamente nel corpo della funzione nei controller del cartridge di Business Manager.

          Tutte le pagine e le richieste proprietarie di Business Manager sono protette per impostazione predefinita con i token CSRF.

           
          Caricamento
          Salesforce Help | Article