O ["SCRIPT_NAME"] $ _SERVER kullanımı güvenli mi

5 Cevap

Ben bir script GET veya POST değişkenler geçmek istemiyorum. Ben dosya adını kullanın ve örneğin php script ürün arama için kullanmak istiyorum:

......./DELL1500.php ......./COMPAQ1213.php

Ben üç soru var:

  1. Nerede PHP $_SERVER["SCRIPT_NAME"] bu sunucu veya istemcilerin tarayıcı olan verileri alır?

  2. Herkes bu kullanarak herhangi bir güvenlik sorunları düşünebiliyor musunuz?

  3. Yine de bu herhangi eski tarayıcılar ile uyumsuz olabilir. Kendi sunucusu tarafından sağlanan eğer ben değil varsayıyorum?

Alkış,

Cameron

5 Cevap

$_SERVER['SCRIPT_NAME'] sunucu tarafı. Sonuç olarak hiçbir tarayıcı uyumluluk sorunları vardır ve güvenlik sorunları olmamalı gibi sadece sunucu istenen URL (yani http://example.com/ ve http://example.com/index.php için hizmet ne bir göstergesidir ) '/index.php' neden olur hem de.

Bu ürün başına farklı bir PHP komut dosyası olan, ucuz, basit bir veritabanı odaklı sitelerin, bu gün ve yaş olarak beni olağanüstü verimsiz vurur, dedi.

Ben hiçbir güvenlik sorunları olduğunu düşünüyorum ve bu istemci tarayıcısına bağlı değildir bu nedenle sunucu üzerinde oluşturulur. Ben bunu kullanabilirsiniz düşünüyorum.

PHP.net

$ _SERVER Başlıklar, yollar ve komut yerleri gibi bilgileri içeren bir dizidir olduğunu. Bu dizideki girdiler HTTP sunucusu tarafından oluşturulur. Her web sunucusu bunları sağlayacak hiçbir garantisi yoktur; sunucuları, bazı yapmayabilir veya burada listelenmeyen başkalarını sağlayabilirler.

Bu sunucu tarafından oluşturulan gibi, kullanımı tamamen güvenli olmalıdır. Kişisel bir not, ben her zaman bir şey sterilize bir süper küresel, ne olursa olsun, olması gerekiyordu nasıl güvenli.

  1. Bütün $_SERVER[] değişkenleri sunucudan bulunmaktadır.
  2. Hayır.
  3. Hayır.

Ayrıca, bu eski bakmak do Stack Overflow post.

Ben bu eski bir yazı olduğunu biliyorum, ama "PHP $ _SERVER güvenliği" için Google'da hızlı bir arama yaparak bu yazı ile geldi ve ben görüyorum inanamadım.

Sen gerekir encode and check olursa olsun güvenli olduğunu düşünüyorum ne kadar tüm girişleri. Örneğin, HTTP_HOST sunucu değişken istemci tarafından gönderilen istek başlıklarına okunur. "Müşteri" her şey olabilir ... sadece örneğin bir PERL / python komut dosyası birisi bu başlıkları tüylenme özellikle yazdı ... tarayıcılar değil.

PHP belgelerine (tekrar) ...

'HTTP_HOST'

Contents of the Host: header from the current request, if there is one.

Istemci isteği içinde HTTP_HOST hemen hemen her zaman vardır. Bu tek değişken değil, Apache ve PHP do not sterilize / sizin için bu değişkenleri kodlamak. Sen kodlamak ve kontrol her zaman ve bu "generated by the server." dahil olmak üzere TÜM girişler için gereken

<?php
$server = array();
foreach($_SERVER as $k => $v)
  $server[urlencode($k)] = urlencode($v);

if(!preg_match("...", "...", $server["X"]))
  exit;

?>

Uygulamalar içine girdiler güvenli olduğunu varsayıyorum asla unutmayın. Sadece kodlamak ve ne olursa olsun başkalarının ne düşündüğünü her şeyi kontrol - Bu konuda tembel olmak değmez.