دور زدن فیلتر کلمات کلیدی با ${IFS} بهجای فاصله
وقتی فیلتر فقط کاراکتر فاصله را مسدود میکند، اما shell راههای دیگری برای جداسازی آرگومان دارد.
اگر یک فیلتر سادهلوحانه فقط کاراکتر space را در ورودی مسدود کند، در bash میتوان با ${IFS} (متغیر Internal Field Separator) همان اثر جداسازی آرگومانها را بدون استفاده از فاصلهی واقعی ایجاد کرد؛ مثلاً cat${IFS}/etc/passwd دقیقاً معادل cat /etc/passwd اجرا میشود.
نکتهی کلیتر
این نشان میدهد چرا blacklist کاراکترها هیچوقت یک دفاع کامل در برابر Command Injection نیست — shell همیشه راههای جایگزین دارد (quoting خالی، hex escape، و غیره).
راهحل
تنها راه ریشهای، عدم فراخوانی shell با ورودی کاربر است؛ هر blacklist کاراکتری دیر یا زود دور زده میشود.