POST tarafından gönderilen bir formun tüm değerlerini almak ve bunları farklı değişkenlere kaydetmek için özüm kullanıyorum. Şüphesiz, ekstrakt() bayrağıyla EXTR_SKIP kullanmak, güvenlik sorunlarını önlemek için 'en iyi yol' şeklindedir, örneğin (belki?) Bilmediğim formun ve diğer güvenlik sorunlarının üzerine yazılması (Web güvenliği hakkında bilgim) oldukçaGüvenlik sorunlarını önlemek için EXTR_SKIP bayrağıyla birlikte ekstrakt() kullanma
0
A
cevap
2
Ben girdilerin çok şey var ve ben her zaman (tabii ki hızlı okuyabilmek için güvenlik
Optimize farkında daha verimli olmasını, hızlı yolunu öğrenmek ister) sınırlıdır hızlı yazabilme becerisi yok
Eğer gerçekten bu rotaya gitmek istiyorsanız:
<?php
// Important, ONLY allow the indices you really want to support
$whitelist = array_key_whitelist($_POST, [
'foo',
'bar',
'baz',
'moo',
'usr',
'lol'
]);
// Then run extract() as expected
extract($whitelist, EXTR_SKIP);
Ve işlev tabii ki: Bu, ileride, değişkenler kendi aklı başında olarak ayarlanmış almayabilir bir döngü çerçevesinde EXTR_SKIP
ile extract()
daha marjinal güvenlidir
<?php
/**
* Only allow the whitelisted array keys to exist:
*
* @ref http://stackoverflow.com/a/36193403/2224584
* @param array $input
* @param array $allowedKeys
* @return array
*/
function array_key_whitelist(array $input, array $allowedKeys = []): array
{
$return = [];
foreach ($allowedKeys as $key) {
if (array_key_exists($key, $input)) {
$return[$key] = $input[$key];
}
}
return $return;
}
Önceden tanımlanmışlarsa değerler.
Fakat cidden, bu bir alıştırmadan çok daha güzel bir koddur. aslında izlemeniz gerekir.
İlgili konular
- 1. NA değerleriyle birlikte güvenlik aralıkları çizme
- 2. SurfaceTexture'ı RenderScript ile birlikte kullanma
- 3. nota.js ile birlikte mustache.js'yi kullanma?
- 4. "-fPIC" bayrağıyla çalıştırılabilir derleme (paylaşılan kitaplık yok)
- 5. SQL iş yürütme durumu almak için SMO.Agent kullanma - güvenlik sorunu
- 6. Windows Güvenlik Duvarı'nı program aracılığıyla kullanma
- 7. Ağ Sorunlarını Simüle Etmek için Web Proxy
- 8. Göreli URI yollarını önlemek için dizgi temizleme
- 9. HTML etiketlerinin yürütülmesini önlemek için HTML etiketi?
- 10. Köşeyi önlemek için açılışı FOUC
- 11. Kullanıcılarla birlikte PHPUnit kod kapsamını kullanma
- 12. SetEnv'yi bir URL parametresiyle birlikte kullanma
- 13. Android İçerik Sağlayıcı ile birlikte Ormlite Kullanma
- 14. Tekil güvenlik içinde zaten güvenlik
- 15. Redux yapısını Firebase ile birlikte kullanma Android
- 16. Bir uygulamada pim, bükülmüş, pygtk birlikte kullanma
- 17. OAuth2 kaynak sunucusuyla birlikte özel http güvenlik yapılandırması
- 18. PHP Dil yapılarını sihirli yöntemlerle birlikte kullanma
- 19. C++ kodu için stil sorunlarını tespit etmek için araç?
- 20. Hiçbir hedef Belirtilen şeması için geçerli olan -Hedef bayrağıyla belirtilmiş
- 21. güvenlik
- 22. Subversion'da dosya kasası sorunlarını önleme
- 23. Tek en etkili uygulama aritmetik taşma önlemek için
- 24. Bu stil sorunlarını nasıl çözebilirim?
- 25. Başlangıçta mongodb bağlantı sorunlarını yönetin
- 26. Önlemek istenmeyen başlıkları ServiceStack
- 27. -g hata ayıklama bayrağıyla nasıl derleme yapılır?
- 28. .htaccess [P] proxy bayrağıyla yeniden yazma
- 29. Swift `join` ülke bayrağıyla dize katıldığında kilitleniyor
- 30. .NET'te güvenlik kimliği için yerelleştirme
Bunu neden $ $? POST? Değişkeni ile uğraşmak yerine kullanmak istersiniz? – Jon
@Jon Çünkü çok fazla girdim var ve her zaman en hızlı yolu öğrenmek, daha üretken olmak (açıkçası güvenlikten haberdar olmak). –
Bu, bunun için istemeyeceğiniz bir çözüm. register_globals() 'bir sebepten dolayı otomatik olarak kapatıldı.^^ Hala, $ _POST' veya '$ _GET' dizilerinde iken, bununla başa çıkmak en iyisidir. Bunu yapmak, kodunuza bakarken, sıkı kullanıcı girdisinin ne olduğunu bildiğiniz anlamına gelir ve normal bir değişkene taşıdığınızda, istediğiniz şekilde dezenfekte edip etmediğinizi kısaca anlayabilirsiniz. – Jon