index olsun var dahil

5 Cevap

im küçük site yapma

Ve yerine neccesarry bilgi (fonksiyonlar, dbconnection, html kafa) ile bir header.php ve footer.php olan ve her sayfada include ben index.php hepsine sahip istiyorum. Ama sonra bir beyaz liste ve tüm bu sayfaları eklemek zorunda. Ben sadece sayfalarında bırakın / ve daha sonra index.php ile erişebilir olmak istiyorum? Page = testi

How would I include pages without having to make a big whitelist? How about using preg_match and checcking that page variable only contain a-z. no evil dots. if it only contain letter a-z > include? or maybe use glob and scan pages/, add them to array so i dont have to edit index.php every time

bana düşüncelerinizi ve fikirlerinizi söyleyin lütfen

<html>
<head>
<title>SindACC</title>
</head>
<body>

<?php include($page) ?>

</body>
</html>

5 Cevap

Eğer istismar herhangi bir üst dir ortadan kaldırmak için basename on the $page değişkeni kullanın, bir beyaz liste kullanmak istemiyorsanız, o zaman pages/ dizininde dosyası içerir. Sürece bu dizinde görülen edilmeyecek dosyaları koymak yok gibi, sen iyisin.

Sadece bir klasöre (örneğin "/ sayfalar") tüm sayfaları koydu. Bunu yapmadan önce daha sonra dosya sayfalar klasöründe olup olmadığını görmek için kontrol içerir.

Ben kesinlikle regex denetimi ya da sadece düz santize (örneğin alfa-sayısal olmayan şey şerit) o ​​zaman (bir file_exists yapabilirsiniz yapardım) kontrol edin ve o başarılı olursa, o zaman dahil

, Sayfalar için bir dizin var sayfa yolun dışında geçersiz karakterler temizlemek ve sadece sayfaları dizinden dosyaları içerir. Sana doğru bir fikir olduğunu düşünüyorum.

Diğerleri dediğim gibi, siz değişken dezenfekte emin olun. Burada olası bir yoldur, ama 20 yollar gibi gidecekseniz bunu yapabilirsiniz:

function sanitizeAlpha($string)
{
    if (preg_match_all('/([A-Z]|[a-z]/', $string, $matches) > 0)
    {
        return implode($matches[0]);
    } else {
        die('Invalid Page Name');
    }
}