Bu kullanıcıların görüp 'olmadan php için bir değişken geçmek mümkün mü?

7 Cevap php

Bir sayfada bir bağlantı var, ve ben böyle bir php dosyasına bir değişken göndermek istiyorum:

 href = "php_file.php?qry=$query"

$ sorgu değişkeni ben php dosyası içinde, mysql yapmak istiyorum bir sorgu içerir.

Benim sorunum birlikte geçirerek ne 'görmek' için kullanıcıların istemiyorsanız, olduğunu. Ben $ _POST kullanmak istiyorum ama bildiğim kadarıyla, bu mümkün değil.

Başka basit bir yolu var mı?

Teşekkürler

7 Cevap

Bu mümkün değildir. POST kullanıldığında bile çok güvensiz olurdu.

Benim önerim $ _SESSION değişkeni sorgu koymak ve onları kimlikleri çeşit vermek ve oturuma id => sorgu çifti depolamak birden fazla sorgu varsa geri php_file.php bunu referans olacaktır.

Hızlı bir örnek:

<?php
session_start();
$_SESSION["query1"] = "SOME QUERY";
$_SESSION["query2"] = "SOME OTHER QUERY";

?>
<a href='php_file.php?q=query1'>Execute first query</a>
<a href='php_file.php?q=query2'>Execute second query</a>

//in php_file.php
session_start();
$query = $_SESSION[$_GET["q"]];

Açıkçası bu çok basit olduğunu ve (vb boş parametreleri kontrol) ona biraz daha "güvenlik" eklemek için ama en azından sorgu kullanıcıya görünür olmaz isteyebilirsiniz.

Evet, belirtildiği gibi bir oturumu kullanın: http://www.php.net/manual/en/book.session.php

Ayrıca, bir SQL sorgusuna URI params'ı batmıyor: http://php.net/manual/en/security.database.sql-injection.php

Sen oturumları veya bir çerez kullanabilirsiniz. Eğer müşteriniz size müşteri hakkında bilmek olamayacağını bilgi göndermek için çalışıyorsanız Ama, ben sorunu yeniden düşünmek gerektiğini düşünüyorum.

Ben $ sorgu SQL değil umut!

Kenara şifreleme dan (ve hatta daha sonra) istemci tarafında veri varsa, bu değer belirlemek mümkün olmaktan müşteri önlemek için hiçbir yolu yoktur.

Kesinlikle istemci tarafında sorguları koymak yok! Bu $ _SESSION olan mağaza olursa olsun. Bu şekilde gerçek veri sunucu tarafında olduğunu. Bu müşteriye gönderilen asla, bu yüzden onu görmek asla.

Açıkçası SQL kodunu gizleme ya da şaşırtma tarayıcılarında php_file.php?qry=DELETE+FROM+users gibi yükleme şeyler engellemek istiyoruz. Senin fikrine yeniden öneririz: Eğer kesmek için soruyorsun.

Eğer sunucu tarafı kodu operasyonların listesini kodlamalısınız ve sadece, örneğin, bir tanımlayıcı iletebilirsiniz:

php_file.php?qry=fetch-totals

ve daha sonra

<?php

if( $_GET['qry']=='fetch-totals' ){
    // ....
}

?>

Peki onları aslında see, bir bağlantı sorgu parametreleri herhangi bir URL kısaltma servisi denemek istemiyorsanız (google will help). Ve kullanıcı size yönlendirilir zaman ancak herhangi bir sorgu parametre olmadan oturuma bu parametreyi kaydetmek ve daha sonra tekrar yönlendirme yapmak. Bu çözüm sadece bir kez daha, bağlantı sadece çirkin olduğunu ve bunu böyle bırakmak istemiyorum halinde çalışacak. Mynameiscoffey dediği gibi anlayışlı hala onu anlamaya mümkün olacak.

Böylece MEZUNLARI gibi çerezler, gizli formları, JavaScript ve.

Siz, teoride, şifreleme kullanmak, ve sunucudaki değer şifresini çözebilir. Tepegöz, ancak çok büyük. Ve yeterince sofistike kullanıcı yine de alacak. Gizli edilecek değerin şifresiz noktada bir değişkene var olacak; sadece doğru zamanda bir debugger ve bir kesme onlar ihtiyaç vardır.

Bu düzende, bu şifreleme ne kadar karmaşık olduğunu fark etmez. RSA ile tüm yol gitmek veya somesuch zorunda değilsiniz; anahtar ile XOR gibi bir şey yeterli olacaktır. Sen değil kararlı bir saldırıya karşı, burada rahat gözetleme karşı koruyorlar.