2018-10-12 16:35:31 -04:00
|
|
|
---
|
|
|
|
|
title: SQL Injection
|
|
|
|
|
localeTitle: حقن SQL
|
|
|
|
|
---
|
|
|
|
|
## حقن SQL
|
|
|
|
|
|
|
|
|
|
حقن SQL هو أسلوب ضار يهدف إلى تسوية قواعد البيانات أو إتلافها. إنها واحدة من أكثر تقنيات قرصنة الإنترنت شيوعًا.
|
|
|
|
|
|
|
|
|
|
يتم تنفيذ حقن SQL عن طريق وضع تعليمات برمجية ضارة في عبارات SQL عن طريق إدخال.
|
|
|
|
|
|
|
|
|
|
المثال التالي هو أحد مقتطفات التعليمات البرمجية التي سيتم استرداد مستخدم من قاعدة بيانات تستند إلى `AccountId` .
|
|
|
|
|
|
2019-06-20 13:35:05 -07:00
|
|
|
```
|
|
|
|
|
passedInAccountId = getRequestString("AccountId");
|
|
|
|
|
sql = "select * from Accounts where AccountId = " + passedInAccountId;
|
|
|
|
|
```
|
2018-10-12 16:35:31 -04:00
|
|
|
|
|
|
|
|
يمكن استخدام حقن SQL لخرق هذا الرمز عن طريق حقن `1=1;` بيان `AccountId` .
|
|
|
|
|
|
|
|
|
|
`https://www.foo.com/get-user?AccountId="105 OR 1=1;"`
|
|
|
|
|
|
|
|
|
|
`1=1` سيقيم دائمًا إلى `TRUE` . سيؤدي ذلك إلى إخراج التعليمة البرمجية التي تم تنفيذها كل جدول الحسابات.
|