php5 güvenlik - get / post parametreleri

7 Cevap php

O olsun / post parametreleri herhangi bir güvenlik açığı vermeyecektir emin hale getirmek için en etkili yöntemi nedir.

I am familior of htmlentities for javascript code injection prevention and addslashes to prevent sql injection.

yani .. şimdi ben her / yazı almak parametresi ikisini kullanıyorum.

iyi bu güvenlik açıklarını önlemek için i kullanabileceğiniz başka fonksiyonlar vardır ya benim php kodu ile ilgili endişe gereken diğer güvenlik sorunları vardır?

7 Cevap

htmlentities (veya htmlspecialchars) ve addslashes (veya mysql_real_escape_string veya diğer veritabanı uygun kaçan fonksiyonu; addslashes değişmez yanlış bir şey) vardır GET / POST parametreleri ile ilgisi. Onlar giden-kaçan kimin giriş might parametrelerden gelen işlevleri vardır, ancak aynı derecede başka bir yerde, böyle bir statik dize veya veritabanından getirilen bir dize olarak gelebilir.

şimdi ben her / yazı almak parametresi ikisini de kullanıyorum.

Hayır, bu işe yaramazsa. Bu ortak bir hata, ve orada tamamen korkunç PHP öğretici malzeme bir çok koruyan biri. Dize küçük bir döngü içine kaçan yerine, tüm kod yayılmış olma sorunu kapalı bölmek için çalışıyor hoş geliyor, ama dize öncelemeli gerçekte böyle çalışmıyor. Her zaman başka bir dize içinde bir dize koymak, kaçan sağ formu ve kaçan sadece sağ formu uygulamak gerekir. Önceden bunu yapamazsınız.

'Sterilize' veya 'filtre' \ veya < gibi karakterleri kodlamak veya kaldırmak için tüm gelen parametreleri kalkmayın. Bu uygulama \\\\\\\\\\\\\\\\\\\\\\\\\\ ve &amp;amp;amp;amp;amp;amp;amp; gibi çöp ile dolduruyor sonuçlanacaktır. Bunun yerine, sadece onları kodlamak gerekir - GET / POST gelmiyor başka varaibles birlikte - metnin farklı bir bağlamda içine tükürme son dakikada, htmlspecialchars HTML veya {[gibi (5)]} MySQL dize hazır. SQL sorunları kaçan önler olsa, hangi genellikle Parametrelenmiş sorgu ile daha kapalı.

Bu sizin uygulamanızın gereksinimlerine uygunluk için gelen verileri kontrol olmamalı demek değildir. Eğer bir alan var ise bunu kullanmadan önce intval buna emin olun, bir tamsayı almak için bekliyoruz. Eğer tüm diğer kontrol karakterleri ile birlikte, dize gelen \n karakteri filtre emin olun, satırsonu içeren beklemeyin düz tek satırlık bir metin dizesi var ise {[(2) }]. Ancak bu uygulama gereksinimleri, değil mutlaka tüm giriş rastlamak bir şey vardır.

GET ve POST değişkenleri yok başka değişkenler daha tehlikelidir. Sen değil giriş noktasında, kullanım noktasında enjeksiyon açıklarını işlemesi gerekir. Burada benim cevaba bakınız:

What’s the best method for sanitizing user input with PHP?

Bir veri güvenlik duvarı olarak Veri Filtreleme kullanabilirsiniz.

http://www.php.net/filter

/ POST kamu böylece ana güvenlik sorunu (dizin yapısını veya db şema vermek yani anahtarlar ve değerler) hassas bilgileri geçemiyor etmektir GET. Ayrıca herkes çok bir veritabanına takmadan önce verileri doğrulamak için emin olun işlemek veya kendi HTTP istekleri oluşturmak unutmayın. Onlarla bir şeyler yapmak kadar hiçbir etkileri var çünkü onlar kendi üzerinde herhangi bir tehdit etmeyen diğer daha o.

If you are looking for a simple and fast solution, that prevents general security vulnerabilities, I could name the following functions. htmlentities() , strip_tags() and addSlashes() if get_magic_quotes_gpc() returns FALSE

Diğer yandan, güvenliğinizi kadar sıkın isterseniz, Kristoffer Böhmann tarafından belirtilen veri filtreleme, kontrol

Çok iyi cevaplar gereken bir kural olarak, zaten vardır:

  • kapatmak magic_quotes_gpc
  • get / post parametreleri doğrulamak
  • Ekran önce html kodlamak parametreleri
  • sorgularda veritabanı kaçış işlevini kullanın

Bu en yaygın açıklarını engeller sadece minimum.

http://zacklive.com/addslashes-or-mysql-real-escape-string-stop-sql-injection/906/: Bu () addslashes Ya mysql_real_escape_string kullanmak için nasıl bir örnek