Güvenlik açısından, her zaman politika kötü bir politika olduğunu verir. Istek geçerli ve güvenli olduğunu sanmayın. Her zaman açık inkar ve beyaz liste kullanın:
switch($_GET['page']):
case 'page-a': case 'page-b': case 'other-page':
include $_GET['page'] . '.html';
break;
default:
include 'index.php';
endswitch;
Beyaz liste korumak için zor ise, temel isme kullanmak, tek bir yolu olanaklarını daraltmak için deneyin:
$name = basename($_GET['page']);
include 'includes/' . $name . '.html';
Bu şekilde sürece bu dizinin tüm içeriğini tutmak (ve tüm yolları dahil) olarak, güvenlik hakkında çok fazla endişe güvenli (birisi bu dizinin bir tehlikeye dosya upload olabilir fark) gerekmez.
Yukarıdaki başarısız olursa, realpath()
kullanmak ve dosya belirtilen dizin ağacında olduğundan emin olmak için deneyin.