# أمان SQL

## 🔗 ما هي SQL Security؟

تسمح SQL Security بتقييد وصول الاستبيان إلى صف معين من جدول موجود في SQL Server وتتيح لك إعادة استخدام البيانات من تلك الاستعلامات لأغراض piping في أي مكان في أسئلة أو إجابات الاستبيان باستخدام [data attributes](https://docs.ngsurvey.com/ar/form-management/security/data-attributes).\
\
يمكن تهيئة كل استعلام باستخدام مُدخلات من المستجيب. يمكنك إضافة متغيرات جديدة لبناء واجهة مستخدم تتيح للمستجيب تعبئتها. ثم يمكن استخدام هذه المتغيرات في استعلامك كمعاملات SQL قياسية. <br>

![](https://848173432-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8fLhS0bmfBRyq0HdUm%2Fuploads%2FWm2qhJO7BVPcAyEe84VV%2Fimage.png?alt=media\&token=495576c3-4291-400d-aef9-741418a31948)\
\
\
إذا رغبت في تعبئة متغير استنادًا إلى querystring يمكنك إنشاء متغير من النوع "Hidden" وتمرير قيمة افتراضية له من querystring كما هو موضح أدناه حيث يتم تمرير معرف العميل من متغير querystring بعنوان "customerid".

![](https://848173432-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M8fLhS0bmfBRyq0HdUm%2Fuploads%2FF1HC5DMKeWwuEGRD5uSK%2Fimage.png?alt=media\&token=c91b99df-810d-40a6-8187-09bca0adb3ff)

{% hint style="info" %}
إذا كانت واجهة المستخدم الخاصة بك مكوّنة باستخدام متغيرات مخفية فقط فسيقوم ngSurvey تلقائيًا باستدعاء الاستعلام بمجرد تحميل الاستبيان ولن يتم عرض أي واجهة مستخدم.
{% endhint %}

{% hint style="warning" %}
سيُمنح المستجيب حق الوصول فقط إذا أعاد الاستعلام صفًا أو إذا كان **Access only to SQL entries** الخيار معطّل.
{% endhint %}

بمجرد أن ينهي المستجيب الاستبيان ويقدّم إجاباته سيقوم ngSurvey بحفظ بيانات SQL المسترجعة جنبًا إلى جنب مع إجابات المستجيب.

## 🔅 خصائص SQL Security

* **`الاتصالات المتاحة`** الاتصال الذي سيُستخدم للاتصال بقاعدة البيانات الخاصة بك
* **`استعلام SQL`** استعلام SQL أو استدعاء إجراء مخزن سيعيد الصف وأعمدته.&#x20;
* **`السماح بإرسال متعدد`** يسمح لنفس الصف بالإرسال عدة مرات على نفس الاستبيان. &#x20;
* **`رسالة المقدمة`** ستُعرض فوق واجهة الحقول عندما يحاول المستجيبون الوصول إلى الاستبيان.
* **`رسالة المفتاح غير الصالحة`** رسالة خطأ تُعرض للمستخدم إذا لم يُرجع أي صف بناءً على القيمة المدخلة.

{% hint style="success" %}
يمكن استخدام عنصر الأمان هذا كمزوّد [key provider](https://docs.ngsurvey.com/ar/form-management/security/key-provider-concepts).&#x20;
{% endhint %}
