Static Code Analysis

تجزیه و تحلیل کد ایستا معمولاً به عنوان بخشی از بررسی کد انجام می شود و در مرحله پیاده سازی چرخه حیات توسعه امنیت انجام می شود. تجزیه و تحلیل کد ایستا معمولاً به اجرای ابزارهای تحلیل کد ایستا اشاره دارد که با استفاده از تکنیک هایی مانند تجزیه و تحلیل لکه دار و تجزیه و تحلیل جریان داده تلاش می کنند آسیب پذیری های احتمالی را در کد منبع "ایستا" برجسته کنند.


در حالت ایده‌آل، چنین ابزارهایی به طور خودکار نقص‌های امنیتی را با درجه بالایی از اطمینان یافتن می‌کنند که آنچه پیدا می‌شود واقعاً یک نقص است. با این حال، برای بسیاری از انواع نقص های امنیتی برنامه، این فراتر از وضعیت هنر است. بنابراین، چنین ابزارهایی اغلب به عنوان کمکی برای تحلیلگر عمل می کنند تا به آنها کمک کند تا بخش های مربوط به امنیت کد را به صفر برسانند تا بتوانند به طور کارآمدتر نقص ها را پیدا کنند، نه ابزاری که به سادگی نقص ها را به طور خودکار پیدا می کند.


تکنیک ها

تکنیک های مختلفی برای تجزیه و تحلیل کد منبع استاتیک برای آسیب پذیری های احتمالی وجود دارد که ممکن است در یک راه حل ترکیب شوند. این تکنیک ها اغلب از فناوری های کامپایلر مشتق شده اند.

تجزیه و تحلیل جریان داده ها

تجزیه و تحلیل جریان داده برای جمع آوری اطلاعات زمان اجرا (دینامیک) در مورد داده ها در نرم افزار در حالی که در حالت ایستا هستند استفاده می شود.

سه اصطلاح رایج در تجزیه و تحلیل جریان داده استفاده می شود، بلوک اصلی، تجزیه و تحلیل جریان کنترل و مسیر جریان کنترل :

بلوک اصلی: دنباله ای از دستورالعمل های متوالی که در آن کنترل در ابتدای بلوک وارد می شود، کنترل در انتهای بلوک خارج می شود و بلوک نمی تواند متوقف شود یا منشعب شود مگر در انتهای آن .

نمونه بلوک پایه PHP:

$a = 0;
$b = 1;

if ($a == $b)
{ # start of block
echo “a and b are the same”;
} # end of block
else
{ # start of block
echo “a and b are different”;
} # end of block