جسون

مخطط جسون (JSON schema)

هناك عدة طرق للتحقق من هيكل وأنواع البيانات داخل كائن (objecT,)جسون، مثل مخطط إكس إم إل.XML مخطط جسون (JSON schema) هي مواصفات للشكل القائم لجسون لتحديد وتعريف الهيكل لبيانات جسون. مخطط جسون يتيح ويعطي عقد ل ماهي بيانات جسون المطلوبة لتحقيق تطبيق ما، وكيف يمكن تعديله، يشبه إلى حد كبير ماذا`يوفر ويعطي مخطط XML لXML. مخطط جسون (JSON schema)يهدف إلى توفير التحقق من صحة الوثائق، والسيطرة على التفاعل مع بيانات جسون. مخطط جسون(JSON schema) يقوم على مفاهيم من مخطط إكس إم إل(XML schema) (RelaxNG),(Kwalify)، ولكن المقصود منها أن تكون جسون هي الأساس، بحيث ان تكون بيانات جسون في شكل مخطط(schema) يمكن استخدامها للتحقق من صحه بيانات جسون، بنفس التسلسل / أدوات إلغاء التسلسل تستعمل لأجل المخطط والبيانات، وأنه يمكن أن يكون تقرير وصفي.

استخدام جسون في اياكس Ajax

شفرة جافا سكريبت التالية يبين كيف يمكن للعميل استخدام(XMLHttpRequest)لطلب كائن(object,) في تنسيق جسون من الخادم. (جذف البرمجه من جهه الخادم، بل لابد من تشكيل للرد على الطلبات على url مع سلسله منسقه من جسون.)
var the_object = {}; 
var http_request = new XMLHttpRequest();http_request.open("GET", url, true);http_request.onreadystatechange = function () {
  if (http_request.readyState == 4 && http_request.status == 200) {
    the_object = JSON.parse(http_request.responseText);
  }
  http_request = null;};http_request.send(null);
علما بأن استخدام (XMLHttpRequest) في هذا المثال ليس عبر متصفح متوافق ؛ الاختلافات النحوية غير متوفرة في للإنترنت إكسبلورر، أوبرا} ،وسفاري، وعلى متصفحات موزيلا. فائدة XMLHttpRequest محدودة بسبب سياسة المصدر نفسه : العنوان (URL)لكي يرد على الطلب يجب أن يتواجد في نفس المجال(DNS) مثل الخادم الذي يستضيف الصفحة التي تحتوي على الطلب. بدلا من ذلك، فإن النهج (JSONP) يشتمل على استخدام وظيفة رد الاتصال المشفرة مرت بين العميل والخادم للسماح العميل بتحميل بيانات جسون من مجالات الطرف الثالث، وإخطار وظيفة الطالب عند الانتهاء، على الرغم من أن هذا يفرض بعض المخاطر الأمنية ومتطلبات إضافية على الخادم.
ويمكن أيضا استخدام عناصر المتصفحات <iframe> لطلب بيانات جسون بشكل متزامن 1}في هجوم عبر متصفح أزياء، أو استخدام عادي وسهل للتقديمات <form action="url_to_cgi_script" target="name_of_hidden_iframe"> هذه المقاربات كانت سائدة قبل مجيء تأييد واسع لXMLHttpRequest.
يمكن <script> الفعال يمكن أن تستخدم أيضا لنقل البيانات جسون. مع هذا الأسلوب كان من الممكن أن يحصل كل ما حول نفس سياسه الاصل لكنه غير آمن. JSONRequest وقد اقترح كبديل أكثر أمانا.

القضايا الأمنية

على الرغم من جسون يقصد به أن يكون تنسيق متسلسل للبيانات، والتصميم على مجموعة فرعية من لغة البرمجة جافا سكريبت هموما أمنية عدة. وسط هذه المخاوف بشأن استخدام مترجم جافا سكريبت الفعال لتنفيذ نص جسون بصيغته جافا سكريبت، مما يعرض البرنامج النصي لشاردة أو خطأوارد فيه، وكثيرا مايكون مصدر قلق كبير عند التعامل مع البيانات التي تم استردادها من الإنترنت. في حين ليست الوسيلة الوحيدة لعملية جسون، وهي تقنية سهلة وشعبية، نابعة من تصميم جسون JSON's لتكون متوافقة مع عمليه جافا سكريبت ()evel، ويتضح ذلك من اكواد ورموز الأمثلة التالية.

جافا سكريبت eval()

لأن جميع تنسيقات نصوص جسون أيضا دمج الجملة القانونية لاكواد الجافا سكريبت، وسيلة سهلة للبرنامج جافا سكريبت لتحليل جسون - تنسيق البيانات هو استخدام eval() المدمج في وظيفة جافا سكريبت eval()، والذي صمم لتقييم تعبيرات جافا سكريبتJavaScript. بدلا من استخدام جسون - محلل محددة، جافا سكريبت تترجم هي نفسهامستخدمه execute بيانات جسون الأصلي لإنتاج كائنات (object)جافا سكريبت.
تقنية وحدة التقييم eval()يخضع لنقاط ضعف أمنية إذا كانت البيانات وكامل بيئة جافا سكريبت ليست ضمن السيطرة على مصدر واحد موثوق به. إذا كانت البيانات هي في حد ذاتها غير موثوق بها، على سبيل المثال، قد يكون عرضة للهجمات الخبيثة شفرة جافا سكريبت الحقن ؛ ما لم يتم استخدام وسائل إضافية للتحقق من صحة البيانات الأولى. التعبيرات العادية تستخدم أحيانا لتنفيذ هذا الاختيار قبل استدعاء eval أيضا، مثل هذه الثقة من الانتهاكات تؤدي إلى احتمال إنشاء مواطن ضعف لسرقهالبيانات والتزوير والتوثيق، وغيرها من احتمال إساءة استخدام البيانات والموارد. اف ار سي FRC التي تعرف جسون (RFC 4627) يوحي باستخدام التعليمات البرمجية التالية للتحقق من صحة جسون eval'ing قبل ذلك (المتغير 'نص','text' هو مدخل جسون) :
var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(text.replace(/"(\\.|[^"\\])*"/g,))) &&eval('(' + text + ')');
وثمة وظيفة جديدة، parseJSON()، وقد اقترح كبديل أكثر أمانا من eval، لأنها تهدف على وجه التحديد طريقة عمل بيانات جسون وليس جافا سكريبت. كان من المقرر إدراجها في الاصدار الرابع من معيار ECMAScript،  على الرغم من أنه يتوفر الآن في مكتبة جافا سكريبت في http://www.JSON.org/json2.js وسيكون في الاصدار الخامسة من ECMAScript.  

XML

إكس إم إلXML وكثيرا ما تستخدم لوصف البيانات المركبة وتسلسل الكائنات(objects) بروتوكولات XML المختلفة تستند إلى وجود لتمثيل نفس النوع من هياكل البيانات كما لنفس النوع من بيانات جسون لأغراض التبادل. ومع ذلك، إكس إم إل XML كونها عامة الغرض كلغة ترميزية، فهي عند بناء جملة أكثر تعقيدا وأكبر حجما من الملف جسون، والتي، في المقابل، تم تصميمه خصيصا لتبادل البيانات.
كلا منهما تفتقر إلى آلية واضحة لتمثيل نوع بياناتالثنائية الكبيرة binary data مثل بيانات الصورة (على الرغم من البيانات الثنائية binary data يمكن ان تكون متسلسلة في كلتا الحالتين من خلال تطبيق ثنائي إلى النص لأغراض عامة إلى نظام ترميز النص). جسون يفتقر إلى المراجع، وهذه سمة أصلية من هذه التطبيقات، وليس له تدوين على أي معيار مماثل على المسار XPath.

الكفاءة

جسون تستخدم في المقام الأول لنقل البيانات عبر الإنترنت، ولكن له بعض الخصائص التي تحد من كفاءة لهذا الغرض. على وجه الخصوص، يجب أن يتم ذلك على فك حرف على أساس كل حرف، وليس له معيار الحكم لضغط البيانات، التدريبي للسلاسل، أو مراجع كائن.

JSONP

JSONP أو "جسون مع حشوة" هو امتداد جسون فيه بادئة كما هو محدد مدخلات وسيطة من الكلمة نفسها. بادئة هذا التضخيم هو عادة اسم دالة رد، ولكن قد يكون أيضا تعيين متغير، بيانا إذا، أو أي حاله أخرى بيان بادئة جافاسكريبت الاقتراح الأصلي ويبدو أنه تم الإدلاء بها في بلوق MacPython في عام 2005 ، ويستخدم حاليا من قبل العديد من تطبيقات الويب 2.0 مثل تطبيقات دوجو أدوات جوجل أدوات تطبيقات ، وخدمات الشبكة العالمية. مزيد من التمديدات هذا البروتوكول قد تم النظر في الحجج التي اقترحها مدخلات إضافية، على سبيل المثال، هي حالة  التي تدعمها S3DB خدمات الويب.
لأن JSONP يجعل من استخدام السمات النصي، وتدعو هي في جوهرها مفتوحة على العالم. لهذا السبب، قد يكون من الملائم JSONP لحمل البيانات الحساسة.
بما في ذلك السمات النصي من المواقع البعيدة تسمح للمواقع نائية لحقن أي محتوى في موقع على شبكة الإنترنت. إذا كانت تلك المواقع النائية من نقاط الضعف التي تسمح للحقن جافا سكريبت، ويمكن أن الموقع الأصلي يمكن أن تتأثر أيضا.

طلب التزوير عبر الموقع

من السذاجة نشر JSONP تخضع لطلب عبر موقع الهجمات التزوير (CSRF أو XSRF).  [[لأن أتش تي أم أل لا يحترم نفسه منشأ السياسة في تطبيقات متصفح الإنترنت، صفحة الخبيثة يمكن طلب والحصول على البيانات جسون المنتمين إلى موقع آخر. وهذا سيسمح لجسون ترميز البيانات التي يتم تقييمها في سياق صفحة الخبيثة، وربما إفشاء كلمات السر أو غيرها من البيانات الحساسة إذا كان المستخدم بتسجيل الدخول إلى موقع آخر.
هذه ليست سوى مشكلة إذاترميز بيانات جسون يحتوي على المعلومات الحساسة التي يجب أن لا يتم الكشف عنها لطرف ثالث، وخادم يعتمد على المتصفح نفسه المنشأ سياسة لمنع وصول البيانات في حالة وجود طلب غير لائق. ليست هناك مشكلة إذا كان الخادم يحدد مدى ملاءمة هذا الطلب في حد ذاته، إلا أن وضع البيانات على السلك إذا كان هذا الطلب هو الصحيح. ملفات تعريف الارتباط في حد ذاتها ليست كافية لتحديد ما إذا كان طلب أذن. الاستخدام الحصري لالكوكيز يخضع لطلب عبر موقع التزوير.

كائن مراجع

معيار جسون لا يعتمد مراجع الكائن(objects refernces)، ولكن مجموعة الأدوات دوجو(DOJO) يوضح كيفية الاتفاقيات التي يمكن اعتمادها لدعم مثل هذه الإشارات باستخدام جسون القياسية.
على وجه التحديد، وحدة dojox.json.ref يقدم الدعم لعدة أشكال من المراجع بما في ذلك التعميم، المتعدد، ادخال الرسالة، المراجع البطيئه