PHP) (iddia veya çıkış / headers_sent kontrol için ölmek?

0 Cevap php

Ben HTML çıktı üretimi için bir PHP sınıfı yazıyorum. Güvenlik nedenleriyle, bu sınıf bulmadan hiçbir kod çıktı gönderdi emin olmak gerekir. Burada aklıma iki seçenek vardır:

Option 1: As an assertion

if( !$this->headersSent ) {
    assert( '!headers_sent()' );
    $this->headersSent = true;
    // ...
}

Option 2: Using an if statement and die()

if( !$this->headersSent ) {
    if( headers_sent() ) {
        die( 'For security, refusing to continue: headers already sent.' );
    }
    $this->headersSent = true;
    // ...
}

Wikipedia says, "İddialar mantıken imkansız durumları belgelemek ve programlama hataları keşfetmek için kullanılmalıdır."

  • Bu sınıf, belirli bir uygulamanın parçası olduğunu, ve ben bu sınıfı kullanarak olmadan HTML çıkış göndermek için bir programlama hatası düşünün. Bu yüzden assert() kullanılmalıdır.
  • Öte yandan, bu uygulama bir gün açık kaynak kodlu hale gelebilir, ve birisi onu özelleştirmek olabilir. O iddialar kapalı olabilir ve bu yüzden çıkan güvenlik sorunu gözden kaçabilecek. Bu yüzden die() kullanılmalıdır.

Hangisi daha iyi bir uygulamadır?

0 Cevap