بسياري از برنامههاي وبي اطلاعاتي را از کاربر دريافت ميکنند و پس از پردازش اين اطلاعات بر مبناي الگوريتمهاي خود نتايجي را توليد ميکنند. به عنوان مثال برنامه يک فرم جستجوي ساده را در اختيار کاربر قرار ميدهد که عبارت جستجو در آن وارد شده و پس از جستجو در پايگاه داده نتايجي توليد و براي کاربر نمايش داده ميشود. اين فرايند يک نمونه عملکرد بسيار رايج است که در بسياري از برنامههاي وبي مشاهده ميشود.
در صورتي که کاربري اهداف خرابکارانه داشته باشد ممکن است بتواند با وارد کردن يک عبارت جستجو ثبات و امنيت برنامه وبي را به خطر بيندازد. اين خطر به ميزاني جدي است که حتي اگر زيرساخت امنيتي بسيار مستحکمي (به عنوان مثال فايروالي مناسب که همه حملات را متوقف کند) مورد استفاده قرار گرفته باشد ولي وروديهاي کاربران مورد ارزيابي قرار نگيرد، تمامي تلاشي که براي ايجاد زيرساخت امنيتي به کار گرفته شده است به هدر ميرود.
بنابراين طراحان سيستم بايد اين نکته مهم را در ذهن خود داشته باشند که همه وروديهاي کاربران تا زماني که از امن بودن آنها اطمينان حاصل نشده است، بايد نامطمئن تلقي شوند. هکرها ميدانند که برنامهها چگونه وروديها را استفاده ميکنند و چگونه ميتوان از آنها براي بهرهگيري از نقاط آسيب پذير سيستم بهره گرفت. بنابراين بهترين روش براي مقابله با اين مشکل تاييد اعتبار همه وروديهاي کاربران است. هرچند که اين فرايند باعث کاهش سرعت و کارآيي برنامه ميشود ولي براي حفظ امنيت سيستم اجتناب ناپذير ميباشد.
دادههاي نامطمئن از طرق مختلفي ميتوانند وارد سيستم شوند، که ميتوان به موارد زير اشاره نمود:
· رشتههاي پرس و جوي URL
· فرمهاي HTML
· Cookieها
· پرس و جوهايي که بر روي يک پايگاه داده انجام ميشوند.
رشته هاي پرس و جو، فيلدهاي اطلاعاتي فرم ها و Cookie ها را مي توان قبل از پردازش اعتبارستجي نمود.
رجوع به:
SecurityScript Injection