Rompere una lunga fila in un file .htaccess


10

Sto impostando un'intestazione Content-Security-Policy nel mio file .htaccess, ed è diventata una riga estremamente lunga, che è una seccatura da gestire. C'è un modo per spezzare questa linea in sottostringhe più gestibili?

A titolo di esempio banale, supponiamo che sto impostando un'intestazione simile

Header set Content-Security-Policy "deafult-src http://domainA.com; script-src http://domainB.com"

Posso (senza ovvi problemi di rottura) realizzare il mio caso specifico con qualcosa del genere

Header append Content-Security-Policy "default-src http://domainA.com;"
Header append Content-Security-Policy "script-src http://domainB.com"

ma questo inserirà delle virgole nella stringa, quindi ero ancora curioso di sapere se ci fosse una risposta migliore che potesse essere applicata in generale, senza aggiungere i caratteri aggiuntivi alla risposta.

Quello che sarebbe l'ideale sarebbe se ci fosse qualche carattere di concatenazione che potrei usare per spezzare la stringa in parti più piccole, come

Header set Content-Security-Policy "default-src http://domainA.com;"
\" script-src http://domainB.com"

o

Header set Content-Security-Policy "default-src http://domainA.com;"^
" script-src http://domainB.com"

o

Header set Content-Security-Policy "default-src http://domainA.com;"
+" script-src http://domainB.com"

In alternativa, se potessi impostare una sorta di variabile e scaricare il loro contenuto per fare qualcosa del genere

a="default-src http://domainA.com;"
b=" script-src http://domainB.com"
Header set Content-Security-Policy $a$b

sarebbe anche molto più gestibile.

C'è stato un argomento simile che è emerso per nginx e la conclusione è stata solo quella di vivere con le lunghe battute (avevano a che fare con una regex lunga, quindi la soluzione append non avrebbe funzionato); Lo sarà anche per Apache?


Tenere premuto Maiusc e premere invio dopo ciascuna sottostringa farà il trucco?
StixO,

@StixO No, questo problema riguarda il modo in cui apache analizza le stringhe nei file conf. Generalmente gli editor (di solito HTML) useranno un tale collegamento per distinguere tra le interruzioni di riga (diciamo, <br />) e le interruzioni di paragrafo (</p>). Ciò dipenderà dal formato di markup da analizzare e dall'editor. I file conf di Apache sono testo puro e come tali non hanno alcuna differenza tra una riga e un paragrafo (indipendentemente dal modificatore, enter produce un singolo carattere di ritorno a capo dipendente dal sistema come \ n o \ r).
MaxPRafferty,

Risposte:


14

Il seguente dovrebbe funzionare:

 Header set Content-Security-Policy "default-src http://domainA.com; \
      script-src http://domainB.com"

Ho provato questo e ottenuto Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration.
Kasperd,

1
@kasperd devi correrea2enmod headers
MaxPRafferty il

@BazzaDP Interessante! Mi aspetto che ciò provocherebbe l'invio da parte del server di una nuova riga di escape, ma sembra che conceda il modo in cui vorrei ed è impercettibile dal punto di vista dei client.
MaxPRafferty,

1
Wow, in realtà, evidentemente puoi sfuggire a qualsiasi personaggio degli spazi bianchi in questo modo. Confermato anche il funzionamento con \ <tab>. .htaccess non sarà mai stato così bello!
MaxPRafferty,

1
Eh, lavora anche per rompere regex! @BazzaDP, potresti voler rilasciare questa risposta su quella domanda nginx che ho menzionato, potrebbe funzionare anche lì.
MaxPRafferty,

5

Sì: la barra rovesciata funziona come continuazione di riga . Questo è sepolto nella documentazione di Apache 2.4 su [ https://httpd.apache.org/docs/2.4/configuring.html#page-header]

Regole importanti:

  1. Gli spazi bianchi all'interno di una linea vanno bene, vale a dire. qualsiasi numero di schede e spazi;
  2. L'ultimo carattere su tutte le righe tranne quella finale deve essere una barra rovesciata; <
  3. La riga finale non deve terminare con una barra rovesciata;
  4. Il carattere di commento di Apache (#) non può essere utilizzato per commentare una riga.

Se queste regole non vengono rispettate, il server risponderà con un errore 500.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.