الفرق بين المراجعتين ل"Cordova/whitelist"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:اللوائح البيضاء في Cordova}}</noinclude> تصنيف: Cordova تصنيف: whitelist اللائحة البيضاء ل...')
 
(تحديث)
 
(5 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:اللوائح البيضاء في Cordova}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:اللوائح البيضاء في كوردوفا}}</noinclude>
[[تصنيف: Cordova]]
+
[[تصنيف: Cordova]]
[[تصنيف: whitelist]]
+
لوائح النطاقات البيضاء (Domain whitelisting) هي نموذج أمني يضبط إمكانية الوصول إلى النطاقات الخارجية التي لا يتحكم فيها تطبيقك. توفر كوردوفا سياسة أمنية قابلة للتعديل لتحديد المواقع الخارجية التي يمكن الوصول إليها.افتراضيًّا، يتم إعداد التطبيقات الجديدة للسماح بالوصول إلى أي موقع. قبل نقل التطبيق إلى مرحلة الإنتاج، عليك إنشاء لائحة بيضاء، وتحديد النطاقات (domains) والنطاقات الفرعية (subdomains) المسموح بالوصول إليها.
اللائحة البيضاء للمواقع (Domain whitelisting) هي نموذج أمني يتحكم في الوصول إلى النطاقات الخارجية التي لا يتحكم فيها تطبيقك. توفر Cordova سياسة أمان قابلة للتعديل لتحديد المواقع الخارجية التي يمكن الوصول إليها. افتراضيا، يتم إعداد التطبيقات الجديدة للسماح بالوصول إلى أي موقع. قبل نقل التطبيق إلى مرحلة الإنتاج، عليك إنشاء قائمة بيضاء والسماح بالوصول إلى نطاقات (domains) ونطاقات فرعية (subdomains) محددة.  
 
  
بالنسبة للأندرويد (اعتبارًا من الإصدار 4.0)، فإن سياسة أمان Cordova قابلة للتوسيع عبر الإضافات.  يجب أن يستخدم تطبيقك الإضافة [../../../reference/cordova-plugin-whitelist/  cordova-plugin-whitelist]، لأنها أكثر أمانًا، وقابلية للتخصيص مقارنة بالإصدارات السابقة من Cordova.  على الرغم من أنه من الممكن تقديم إضافة اللوائح البيضاء بنفسك، فلا يُنصح بذلك ما لم يكن تطبيقك بحاجة إلى سياسة أمان محددة للغاية.  راجع صفحة [../../../reference/cordova-plugin-whitelist/  cordova-plugin-whitelist] لمزيد من التفاصيل حول الاستخدام والإعداد.
+
__TOC__
  
بالنسبة للمنصات الأخرى، تلتزم كوردوفا بمواصفات [http://www.w3.org/TR/widgets-access/  W3C Widget Accessالتي تعتمد على العنصر <code><access></code> داخل ملف <code>config.xml</code> الخاص بالتطبيق، لتمكين الوصول إلى نطاقات محددة. بالنسبة للمشروعات التي تعتمد على واجهة سطر الأوامر (CLI) الموضحة في الصفحة [../../cli/index.html  The Command-Line Interface]، فهذا الملف موجود في المجلد الأعلى للمشروع. بخلاف ذلك، بالنسبة لمسارات التطوير الخاصة بمنصات معينة، يتم إدراج المواقع في الأقسام أدناه.  
+
بالنسبة للأندرويد (اعتبارًا من الإصدار 4.0)، فإنَّ [[Cordova/security|السياسة الأمنية]] لكوردوفا قابلة للتوسيع عبر استخدام [[Cordova/plugins|الإضافات]]. يجب أن يستخدم تطبيقك الإضافة "[[Cordova/cordova plugin whitelist|اللائحة البيضاء]]"، لأنَّها أكثر أمانًا وقابليةً للتخصيص مقارنة بالإصدارات السابقة من كوردوفا. على الرغم من أنَّه من الممكن تنفيذ إضافة خاصة باللوائح البيضاء بنفسك، فلا يُنصح بذلك ما لم يكن تطبيقك بحاجة إلى سياسة أمان محددة للغاية. راجع توثيق [[Cordova/cordova plugin whitelist|إضافة اللائحة البيضاء]] لمزيد من التفاصيل حول كيفية الاستخدام والإعداد.
  
توضح الأمثلة التالية صياغة القوائم البيضاء في العنصر <code><access></code>:
+
بالنسبة للمنصات الأخرى، تلتزم كوردوفا بمواصفات [http://www.w3.org/TR/widgets-access/ W3C للوصول إلى الأدوات (widget)]، التي تعتمد على العنصر <code><access></code> في الملف <code>config.xml</code> الخاص بالتطبيق لتمكين الوصول إلى نطاقات محددة. بالنسبة للمشروعات التي تعتمد على [[Cordova/cli|واجهة سطر الأوامر (CLI)]]، فهذا الملف موجود في المجلد الأعلى للمشروع. أما بالنسبة لمسارات التطوير الخاصة بمنصات معينة، فقد أدرجناها في الأقسام أدناه.
  
الوصول إلى [http://google.com google.com]:  
+
توضح الأمثلة التالية كيفية صياغة اللوائح البيضاء في العنصر <code><access></code>:
<syntaxhighlight><access origin="http://google.com" />‎</syntaxhighlight>  
+
* الوصول إلى [http://google.com/ google.com]:
 +
<syntaxhighlight lang="xml"><access origin="http://google.com" /></syntaxhighlight>
 +
* الوصول إلى النطاق الآمن [https://google.com/ google.com] ‏(<nowiki>https://‎</nowiki>):
 +
<syntaxhighlight lang="xml"><access origin="https://google.com" /></syntaxhighlight>
 +
* الوصول إلى النطاق الفرعي [http://maps.google.com/ maps.google.com]:
 +
<syntaxhighlight lang="xml"><access origin="http://maps.google.com" /></syntaxhighlight>
 +
* الوصول إلى جميع النطاقات الفرعية في [http://google.com/ google.com] مثل [http://mail.google.com/ mail.google.com] و [http://docs.google.com/ docs.google.com]:
 +
<syntaxhighlight lang="xml"><access origin="http://*.google.com" /></syntaxhighlight>
 +
* الوصول إلى جميع النطاقات مثل: [http://google.com/ google.com] و [https://wiki.hsoub.com/ https://wiki.hsoub.com]:
 +
<syntaxhighlight lang="xml"><access origin="*" /></syntaxhighlight>هذه هي القيمة الافتراضية لمشاريع [[Cordova/cli|واجهة سطر الأوامر (CLI)]] المُنشأة حديثًا.
  
الوصول إلى النطاق الآمن [https://google.com google.com] ‏(<code>https://</code>):
+
تذكر أنّّ بعض المواقع قد تعيد التوجيه تلقائيًا من صفحتها الرئيسية إلى عنوان مختلف، مثلًا لاستخدام البروتوكول https، أو لإعادة التوجيه إلى نطاق خاص ببلد معين. على سبيل المثال، سيعيد النطاق <code>[http://www.google.com/ http://www.google.com]</code> التوجيه نحو <code>[https://www.google.com/ https://www.google.com]</code> لأجل استخدام البروتوكول SSL/TLS، ومن ثم قد يعيد التوجيه إلى نطاق جغرافي مثل <code>[https://www.google.co.uk/ https://www.google.co.uk]</code>. قد تتطلب مثل هذه السيناريوهات مُدخلات إضافية أو مُعدلة في اللائحة البيضاء تتجاوز متطلباتك الأولية. يرجى أخذ هذا بالحسبان إبّان بناء قائمتك البيضاء.
<syntaxhighlight><access origin="https://google.com" />‎</syntaxhighlight>  
 
  
الوصول إلى النطاق الفرعي [http://maps.google.com  maps.google.com]:
+
لاحظ أنَّ القائمة البيضاء تنطبق فقط على العارض <code>[[Cordova/webviews|webview]]</code> الرئيسي في كوردوفا، ولا تنطبق على العرض العارض في <code>InAppBrowser</code> أو الروابط المفتوحة في متصفح الويب الخاص بالنظام.
<syntaxhighlight><access origin="http://maps.google.com" />‎</syntaxhighlight>
+
==اللوائح البيضاء في أندرويد==
 +
كما ورد في الأعلى، راجع توثيق [[Cordova/cordova plugin whitelist|إضافة اللائحة البيضاء]] لمزيد من التفاصيل.
 +
==اللوائح البيضاء في iOS==
 +
لا يتطلب الإصدار 4.0 من Cordova-ios فما فوق تثبيت [[Cordova/cordova plugin whitelist|إضافة اللائحة البيضاء]]، لكن  تنطبق مع ذلك تفاصيل إعدادها على منصة iOS.
  
الوصول إلى جميع النطاقات الفرعية في [http://google.com  google.com]، على سبيل المثال [http://mail.google.com  mail.google.com] و [http://docs.google.com  docs.google.com]:
+
الوسمان <code><allow-intent></code> و <code><allow-navigation></code> جديدان في الإصدارات cordova-ios 4.x وما بعدها، لذا راجع توثيق [[Cordova/cordova plugin whitelist|إضافة اللائحة البيضاء]] لمزيد من التفاصيل حول استخدام هذه الوسوم.
<syntaxhighlight><access origin="http://*.google.com" /></syntaxhighlight>  
 
  
الوصول إلى جميع النطاقات، على سبيل المثال، [http://google.com  google.com] و [http://developer.mozilla.org  developer.mozilla.org]:
+
ميزة الخصوصية [https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33 ATS‎] (اختصار للعبارة Application Transport Security) جديدة في منصة iOS 9 ‏(Xcode 7). تعمل هذه الميزة الجديدة كلائحة بيضاء لتطبيقك. ستحوّل [[Cordova/cli|واجهة سطر الأوامر]] الخاصة بكوردوفا الوسمين <code><access></code> و <code><allow-navigation></code> تلقائيًا إلى مُوجّهات ATS المناسبة.
<syntaxhighlight><access origin="*" /></syntaxhighlight>  
 
  
هذه هي القيمة الافتراضية لمشاريع واجهة سطر الأوامر (CLI) التي تم إنشاؤها حديثًا.  
+
يدعم الوسمان <code><access></code> و <code><allow-navigation></code> الخاصيات الثلاثة المذكورة أدناه، والتي لها مقابل في ATS:
 +
*<code>minimum-tls-version</code>: سلسلة نصية، قيمتها الافتراضية تساوي '<code>TLSv1.2</code>'.
 +
*<code>requires-forward-secrecy</code>: قيمة منطقية، قيمتها الافتراضية تساوي '<code>true</code>'.
 +
*<code>requires-certificate-transparency</code>: قيمة منطقية، قيمتها الافتراضية تساوي "<code>false</code>"، جديدة في iOS 10. إليك المثال التالي الذي يشرح ما سبق:
 +
<syntaxhighlight lang="xml"><access origin='https://cordova.apache.org' minimum-tls-version='TLSv1.1' requires-forward-secrecy='false' requires-certificate-transparency='true' />
 +
</syntaxhighlight>في منصة iOS 10 والإصدارات الموالية، يدعم الوسم <code><access></code> الخاصيات الثلاثة أدناه عند إقرانها مع المحرف العام <code>*</code>. فهذه الخاصيات لها أيضًا ما يعادلها في ATS:
 +
*<code>allows-arbitrary-loads-for-media</code>: قيمة منطقية، قيمتها الافتراضية تساوي '<code>false</code>'، جديدة في iOS 10. جديدة في cordova-ios@4.5.0، ومُعدّة لأجل استخدام اسم الخاصية المناسبة. الخاصية القديمة <code>allows-arbitrary-loads-in-media</code> صارت الآن مهملة.
 +
*<code>allows-arbitrary-loads-in-web-content</code>: قيمة منطقية، قيمتها الافتراضية تساوي '<code>false</code>'، جديدة في iOS 10.
 +
*<code>allows-local-networking</code>: قيمة منطقية، قيمتها الافتراضية تساوي '<code>false</code>'، جديدة في iOS 10. إليك المثال التالي:
 +
<syntaxhighlight lang="xml"><access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />
 +
</syntaxhighlight>ارجع إلى صفحة [https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33 ATS] لمزيد من التفاصيل.
  
تذكر أنّّ بعض المواقع قد تعيد التوجيه تلقائيًا من صفحتها الرئيسية إلى عنوان مختلف، مثلا لاستخدام البروتوكول https، أو لإعادة التوجيه إلى نطاق خاص ببلد معين. على سبيل المثال، سيعيد النطاق <code>http://www.google.com</code> التوجيه نحو <code>https://www.google.com</code> لاستخدام SSL/TLS، ومن ثم قد يعيد التوجيه إلى نطاق جغرافي مثل <code>https://www.google.co.uk</code>. قد تتطلب مثل هذه السيناريوهات مُدخلات إضافية في اللائحة البيضاء أو مُعدلة تتجاوز متطلباتك الأولية. يرجى أخذ هذا بعين الاعتبار إبّان بناء قائمتك البيضاء.
+
== انظر أيضًا ==
 +
* [[Cordova/security|إدارة الأمن.]]
 +
* [[Cordova/privacy|إدارة الخصوصية.]]
 +
* [[Cordova/cordova plugin whitelist|إضافة اللوائح البيضاء]]
  
لاحظ أن القائمة البيضاء تنطبق فقط على معرض webview الرئيسي في Cordova، ولا تنطبق على معرض webview InAppBrowser أو الروابط المفتوحة في متصفح الويب الخاص بالنظام.
 
 
== اللوائح البيضاء في أندرويد ==
 
 
على النحو الوارد أعلاه، راجع صفحة [../../../reference/cordova-plugin-whitelist/  cordova-plugin-whitelist] للحصول على التفاصيل.  بالنسبة إلى نسخ أندرويد السابقة للإصدار 4.0.0، راجع الإصدارات القديمة من هذه الوثائق.
 
 
== اللوائح البيضاء في iOS ==
 
 
لا يتطلب الإصدار 4.0 من <code>Cordova-ios</code> فما فوق تثبيت '''not''' الإضافة [../../../reference/cordova-plugin-whitelist/  cordova-plugin-whitelist]، لكن مع ذلك تنطبق تفاصيل إعدادها على منصة iOS أيضًا. الوسمان <code><allow-intent></code> و <code><allow-navigation></code> جديدان في الإصدارات cordova-ios 4.x وما بعدها، راجع توئيق [../../../reference/cordova-plugin-whitelist/  cordova-plugin-whitelist] لمزيد من التفاصيل حول استخدام هذه الوسوم.
 
 
بالنسبة لإصدارات Cordova-ios التي تسبق الإصدار 4.0.0، راجع الإصدارات القديمة من هذا التوثيق.
 
 
[https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33  Application Transport Security (ATS)] جديد في iOS 9 ‏(Xcode 7). تعمل هذه الميزة الجديدة كلائحة بيضاء لتطبيقك. ستحوّل واجهة سطر الأوامر الخاصة بـ cordova الوسمين <code><access></code> و <code><allow-navigation></code> تلقائيًا إلى مُوجّهات ATS المناسبة.
 
 
يدعم الوسمان <code><access></code> و <code><allow-navigation></code> الخاصيات الثلاثة المذكورة أدناه، والتي لها مقابلاتها في ATS:
 
* minimum-tls-version (سلسلة نصية، قيمتها الافتراضية تساوي 'TLSv1.2')
 
* requires-forward-secrecy (قيمة منطقية، قيمتها الافتراضية تساوي 'true')
 
* requires-certificate-transparency (قيمة منطقية، قيمتها الافتراضية تساوي "false"، جديدة في iOS 10)
 
 
مثال:
 
<syntaxhighlight><access origin='https://cordova.apache.org' minimum-tls-version='TLSv1.1' requires-forward-secrecy='false' requires-certificate-transparency='true' />‎</syntaxhighlight>
 
 
في منصة iOS 10 وما فوقها، يدعم الوسم <code><access></code> الخاصيات الثلاثة أدناه، وعند إقرانها مع المحرف العام <code>*</code>. فهذه الخاصيات لها أيضا ما يعادلها في ATS:
 
* allows-arbitrary-loads-for-media (قيمة منطقية، قيمتها الافتراضية تساوي 'false'، جديدة في iOS 10، وجديدة في cordova-ios@4.5.0، مُعدلة لاستخدام اسم الخاصية المناسبة). الخاصية القديمة <code>allows-arbitrary-loads-in-media</code> صارت الآن مُتجاوزة.
 
* allows-arbitrary-loads-in-web-content (قيمة منطقية، قيمتها الافتراضية تساوي 'false'، جديدة في iOS 10)
 
* allows-local-networking (قيمة منطقية، قيمتها الافتراضية تساوي 'false'، جديدة في iOS 10)
 
 
مثال:
 
<syntaxhighlight><access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />‎</syntaxhighlight>
 
 
راجع صفحة [https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33  ATS Technote] لمزيد من التفاصيل.
 
 
==مصادر==
 
==مصادر==
 
*[https://cordova.apache.org/docs/en/latest/guide/appdev/whitelist/index.html قسم اللوائح البيضاء في التوثيق الرسمي لكوردوفا.]
 
*[https://cordova.apache.org/docs/en/latest/guide/appdev/whitelist/index.html قسم اللوائح البيضاء في التوثيق الرسمي لكوردوفا.]

المراجعة الحالية بتاريخ 09:53، 1 ديسمبر 2020

لوائح النطاقات البيضاء (Domain whitelisting) هي نموذج أمني يضبط إمكانية الوصول إلى النطاقات الخارجية التي لا يتحكم فيها تطبيقك. توفر كوردوفا سياسة أمنية قابلة للتعديل لتحديد المواقع الخارجية التي يمكن الوصول إليها.افتراضيًّا، يتم إعداد التطبيقات الجديدة للسماح بالوصول إلى أي موقع. قبل نقل التطبيق إلى مرحلة الإنتاج، عليك إنشاء لائحة بيضاء، وتحديد النطاقات (domains) والنطاقات الفرعية (subdomains) المسموح بالوصول إليها.

بالنسبة للأندرويد (اعتبارًا من الإصدار 4.0)، فإنَّ السياسة الأمنية لكوردوفا قابلة للتوسيع عبر استخدام الإضافات. يجب أن يستخدم تطبيقك الإضافة "اللائحة البيضاء"، لأنَّها أكثر أمانًا وقابليةً للتخصيص مقارنة بالإصدارات السابقة من كوردوفا. على الرغم من أنَّه من الممكن تنفيذ إضافة خاصة باللوائح البيضاء بنفسك، فلا يُنصح بذلك ما لم يكن تطبيقك بحاجة إلى سياسة أمان محددة للغاية. راجع توثيق إضافة اللائحة البيضاء لمزيد من التفاصيل حول كيفية الاستخدام والإعداد.

بالنسبة للمنصات الأخرى، تلتزم كوردوفا بمواصفات W3C للوصول إلى الأدوات (widget)، التي تعتمد على العنصر <access> في الملف config.xml الخاص بالتطبيق لتمكين الوصول إلى نطاقات محددة. بالنسبة للمشروعات التي تعتمد على واجهة سطر الأوامر (CLI)، فهذا الملف موجود في المجلد الأعلى للمشروع. أما بالنسبة لمسارات التطوير الخاصة بمنصات معينة، فقد أدرجناها في الأقسام أدناه.

توضح الأمثلة التالية كيفية صياغة اللوائح البيضاء في العنصر <access>:

<access origin="http://google.com" />
  • الوصول إلى النطاق الآمن google.com ‏(https://‎):
<access origin="https://google.com" />
<access origin="http://maps.google.com" />
<access origin="http://*.google.com" />
<access origin="*" />

هذه هي القيمة الافتراضية لمشاريع واجهة سطر الأوامر (CLI) المُنشأة حديثًا.

تذكر أنّّ بعض المواقع قد تعيد التوجيه تلقائيًا من صفحتها الرئيسية إلى عنوان مختلف، مثلًا لاستخدام البروتوكول https، أو لإعادة التوجيه إلى نطاق خاص ببلد معين. على سبيل المثال، سيعيد النطاق http://www.google.com التوجيه نحو https://www.google.com لأجل استخدام البروتوكول SSL/TLS، ومن ثم قد يعيد التوجيه إلى نطاق جغرافي مثل https://www.google.co.uk. قد تتطلب مثل هذه السيناريوهات مُدخلات إضافية أو مُعدلة في اللائحة البيضاء تتجاوز متطلباتك الأولية. يرجى أخذ هذا بالحسبان إبّان بناء قائمتك البيضاء.

لاحظ أنَّ القائمة البيضاء تنطبق فقط على العارض webview الرئيسي في كوردوفا، ولا تنطبق على العرض العارض في InAppBrowser أو الروابط المفتوحة في متصفح الويب الخاص بالنظام.

اللوائح البيضاء في أندرويد

كما ورد في الأعلى، راجع توثيق إضافة اللائحة البيضاء لمزيد من التفاصيل.

اللوائح البيضاء في iOS

لا يتطلب الإصدار 4.0 من Cordova-ios فما فوق تثبيت إضافة اللائحة البيضاء، لكن تنطبق مع ذلك تفاصيل إعدادها على منصة iOS.

الوسمان <allow-intent> و <allow-navigation> جديدان في الإصدارات cordova-ios 4.x وما بعدها، لذا راجع توثيق إضافة اللائحة البيضاء لمزيد من التفاصيل حول استخدام هذه الوسوم.

ميزة الخصوصية ATS‎ (اختصار للعبارة Application Transport Security) جديدة في منصة iOS 9 ‏(Xcode 7). تعمل هذه الميزة الجديدة كلائحة بيضاء لتطبيقك. ستحوّل واجهة سطر الأوامر الخاصة بكوردوفا الوسمين <access> و <allow-navigation> تلقائيًا إلى مُوجّهات ATS المناسبة.

يدعم الوسمان <access> و <allow-navigation> الخاصيات الثلاثة المذكورة أدناه، والتي لها مقابل في ATS:

  • minimum-tls-version: سلسلة نصية، قيمتها الافتراضية تساوي 'TLSv1.2'.
  • requires-forward-secrecy: قيمة منطقية، قيمتها الافتراضية تساوي 'true'.
  • requires-certificate-transparency: قيمة منطقية، قيمتها الافتراضية تساوي "false"، جديدة في iOS 10. إليك المثال التالي الذي يشرح ما سبق:
<access origin='https://cordova.apache.org' minimum-tls-version='TLSv1.1' requires-forward-secrecy='false' requires-certificate-transparency='true' />

في منصة iOS 10 والإصدارات الموالية، يدعم الوسم <access> الخاصيات الثلاثة أدناه عند إقرانها مع المحرف العام *. فهذه الخاصيات لها أيضًا ما يعادلها في ATS:

  • allows-arbitrary-loads-for-media: قيمة منطقية، قيمتها الافتراضية تساوي 'false'، جديدة في iOS 10. جديدة في cordova-ios@4.5.0، ومُعدّة لأجل استخدام اسم الخاصية المناسبة. الخاصية القديمة allows-arbitrary-loads-in-media صارت الآن مهملة.
  • allows-arbitrary-loads-in-web-content: قيمة منطقية، قيمتها الافتراضية تساوي 'false'، جديدة في iOS 10.
  • allows-local-networking: قيمة منطقية، قيمتها الافتراضية تساوي 'false'، جديدة في iOS 10. إليك المثال التالي:
<access origin='*' allows-arbitrary-loads-for-media='true' allows-arbitrary-loads-in-web-content='true' allows-local-networking='true' />

ارجع إلى صفحة ATS لمزيد من التفاصيل.

انظر أيضًا

مصادر