tehlikeli Çokbaytlı dizelerde str_replace ()?

0 Cevap php

Belirli Çokbaytlı karakter setleri göz önüne alındığında, ben şu bunu yapmak için tasarlanmıştır ne yapmaz düşünmek doğru ki?

$string = str_replace('"', '\\"', $string);

Özellikle, giriş 0xbf5c gibi geçerli bir karaktere sahip olabilecek bir karakter kümesi, yani bir saldırganın ise bir tırnaksız çift tırnak (") izledi geçerli bir karakter bırakarak, 0xbf5c22 almak için 0xbf22 enjekte edebilir.

Kolay bu sorunu azaltmak için bir yol, ya da ben ilk etapta konuyu yanlış anlama ben var mı?

(Benim durumumda, dize bir HTML giriş etiketinin value niteliği giriyor: 'input type = "text" value = "'.. $ String 'echo">' ;)

EDIT: Bu konuda ne (preg_quote gibi bir işlev hakkında)? İşte bunun için hiçbir charset argüman, bu nedenle bu senaryoda tamamen yararsız görünüyor. UTF-8 (evet, bu güzel olurdu) için charset sınırlama seçeneği var YAPMAYIN zaman gerçekten engelli gibi görünüyor. Ne değiştirmek ve alıntı işlevleri bu durumda mevcuttur?

0 Cevap