توضیحش توی این منبع که قبلا گذاشتم هست: http://stackoverflow.com/questions/5...18602#12118602
همچنین در این منبع: http://www.shiflett.org/blog/2006/ja...-escape-string
در هر دوی این منابع اگر دقت کنی به کاراکترست GBK اشاره شده که مال زبان چینی است!
البته GBK رو بعنوان یک مورد مثال انتخاب کرده و چند کاراکترست خاص دیگر هم هستن که میتونن در این حمله مورد استفاده قرار بگیرن.
وقت ندارم همش رو ترجمه کنم اما ترجمه بخشی از منبع اول رو میذارم:
For this attack to work, we need the encoding that the server's expecting on the connection both to encode ' as in ASCII i.e. 0x27 and to have some character whose final byte is an ASCII \ i.e. 0x5c. As it turns out, there are 5 such encodings supported in MySQL 5.6 by default: big5, cp932, gb2312, bgk and sjis. We'll select gbk here.
ترجمه: «برای اینکه این حمله کار کند، ما به انکدینگی که سرور انتظار دارد نیاز داریم که هر دوی این ویژگیها را داشته باشد: کاراکتر کوتیشن تکی را همچون ASCII انکد کند (یعنی 0x27) و کاراکتری داشته باشد که بایت آخر آن یک بک اسلش اسکی باشد. 5 تا از چنان انکدینگ هایی در MySQL 5.6 بطور پیشفرض پشتیبانی میشوند: big5, cp932, gb2312, gbk , sjis. ما در اینجا gbk را انتخاب میکنیم.»
نکته اینکه ظاهرا همهء این کاراکترست ها جز sjis که مال زبان ژاپنی است برای زبان چینی هستن!
تا زمانی که شما از یکی از این انکدینگ ها در برنامه استفاده نکرده باشی و دستوری مثل mysql_query('SET NAMES gbk'); در برنامت نداشته باشی، در برابر این حمله مصون هستی. فکر نمیکنم هیچکدام از برنامه نویسان وطنی تاحالا از این کاراکترست ها استفاده کرده باشن؛ بنظرم اگر هم کسی نیاز داشته باشه زبان چینی یا ژاپنی رو ساپورت کنه احتمال زیاد با utf8 کار میکنه.