Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Inluden Javascript/CSS boven public_html

Pagina: 1
Acties:

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Ik heb een gedeelde library, die uit o.m. .js en .css files bestaat.

Nu wil ik deze library boven public_html zetten (in een map 'shared'), zodat hackerts niet bijv niet bij de PHP kunnen, maar bovenal zodat ik de library kan hergebruiken in diverse projecten.

De vraag is echter: hoe include ik de .js en .css files, want HTML kan die per definitie niet benaderen. Een oplossing zou zijn: een PHP bestand in public_html wat de betreffende files included:

includer.php
PHP:
1
2
3
4
5
6
7
8
9
10
$filename = filter_input(INPUT_GET, 'filename');
switch (filter_input(INPUT_GET, 'type')) {
  case 'js':
    include('../../shared/mylib/src/js/'.$filename);
    break;

  case 'css':
    include('../../shared/mylib/src/ui/'.$filename);
    break;
}


Mijn vraag: is dit een veilige manier zo? Je geeft de filename mee als GET variabele, maar ik zo 1-2-3 niet wat er in deze implementatie de veiligheidsconsequenties van zijn... Jullie?

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21-11 14:12
Je kan ook een build tool gebruiken (Gulp/Grunt etc) of een php scriptje schrijven dat je javascript kopieert (en evt. minified etc.) naar de public_html folder.

Ik zou dit iig niet zo doen. Nu kan iedereen elk bestand oproepen wat hij wil. Gebruik nog minimaal http://www.php.net/manual/en/function.basename.php om te zorgen dat ze alleen in die specifieke map een bestand kunnen openen. En ik zou het niet includen, maar even uitlezen en dan echo'en. En je moet dan ook nog de headers goed zetten.

Je kan ook Assetic gebruiken, die is er voor gemaakt om assets te tonen/verwerken in PHP. Moet je perse de bestandsnaam meegeven? Je kan ook 1 js en 1 css bestand aanroepen, waarbij je in PHP aangeeft welke bestanden daarin getoond moeten worden.

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Dank, ja dat van die basename had ik ook al bedacht :)

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 05-11 17:53
Je kan ook de gedeelde assets map symlinken in je project, of op vhost niveau een alias aanmaken onder een bepaalde map.

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 00:24
Gewoon met een symlink of een Alias directive oplossen. Niet gaan kloten met een tussenscriptje dat bestanden buiten docroot leest en output, dat is ten eerste nergens voor nodig en zorgt ten tweede voor extra overhead.

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
_JGC_ schreef op maandag 24 maart 2014 @ 22:35:
Gewoon met een symlink of een Alias directive oplossen. Niet gaan kloten met een tussenscriptje dat bestanden buiten docroot leest en output, dat is ten eerste nergens voor nodig en zorgt ten tweede voor extra overhead.
_/-\o_

Als dank zal ik vanavond een biertje drinken op jouw gezondheid.
Pagina: 1