Mysql aslında herhangi bir güvenlik riski oluşturabilir olarak form aynı alanlar adlandırma mı?

6 Cevap php

Eğer veya HTML alanları tam olarak aynı fveyam alanları adlandırmak gerekir herhangi bir neden var mı?

<input type="text" name="my_field_1" id="my_field_1" /> --> mysql row my_field_1

veya

<input type="text" name="myField1" id="myField1" /> --> mysql row my_field_1

The only thing I can think of are probably naming conventions fveya HTML vs Mysql (personal preference maybe), as well as slight injection prevention (obviously the field name would have to vary mveyae... but all values should be validated first anyway + the use of real escape string).

6 Cevap

Ben bu bir sorun teşkil edebilir görebilirsiniz tek yolu saldırganın formu ile değiştirilmesi gerekiyordu değil aynı tabloda, bir korunan sütunun adını bilir ne zaman ve niyeti ile bu isimde yeni bir giriş öğesi oluşturur tabloya yasadışı değerini "kayma".

Bu program must filter out anyway on program level, so there's no problem with naming form fields after your actual column names. You just need to take care to never loop through every available table column or form field şeydir, ama güncelleştirilmiş olur ne hakkında seçici olmak.

İkincil, çok uzak bir risk size tablodaki sütun isimleri teşhir olmasıdır. Eğer güvenlik konusunda süper paranoyak iseniz Yani, form kendi sütununda farklı bir ad alanlarını vermek isteyebilirsiniz. Ama bunun için herhangi bir gerçek zorunluluk göremiyorum.

Eğer doğrulama iseniz o zaman, ancak formdan sadece ne beklediğiniz için doğrulama sınırı yoktur. Ne sahibi sütunu olan bir açıklama tablo var ve hayır sahibi alan üzerinde var olduğunu biliyorum çünkü körü körüne, formdaki tüm alanlardan bir SQL güncelleme ifadesi oluşturmak olur? Ben TamperData, bana bir istek veri eklemek için izin veren bir Firefox uzantısı kullanımı ve ben sahip alanını eklerseniz ne olur?

Tüm alanları ile değil döngü yapmak ve bunları kabul, beklediğiniz sadece alanlar vardır ve hiçbir ekstralar vardır emin olun!

Anlaştık. Problem yok.

Aslında, tarlalar daha fazla otomatik güncelleme veya MySQL takmadan yapmak biraz serin döngü şemaları yapabilirsiniz Tablo alanları gibi aynı isim eğer.

Actually no one will know that you used the field names instead of custom names (except for some typical column names). How can they now? Maybe you used custom names, maybe not ;)
It makes your code easier to understand if you use the same names and your code will be easier to maintain.

Ancak oluşabilecek sorunların farkında olmak, diğer cevapları okudum.

Bu sürece web sitenizin SQL enjeksiyon için% 100 güvenli olduğu gibi bir güvenlik riski değil. Yani oldukça FieldNames kullanma / seçme hakkında daha ki aslında endişe ediyorum.

Hayır, herhangi bir saldırgan yine tüm kaynak kod tabanı erişimi üstlenmesi gerektiğini, bu yüzden onları farklı bir şey adlandırma size saldırmak için onların kapasitelerini azaltmak değil çünkü.

Bir uygulamayı korumak için doğru yolu bilgi birisi (onlar zaten alabilirsiniz) saldırmak gerekebilir gizlemek, doğru değil yazmaktır.