DataIncrement 2 - حل النزاعات ، TRIZ في التنمية الحقيقية

في المرة الأخيرة ، من التعليقات ، اتضح أن هناك مشكلتين محددتين للمشروع ، نشكر الكثير منهم على المستخدمين غير المبالين. المشكلة الأولى هي عدم وجود شهادة SSL على الموقع. وثانيًا ، يعد الكشف عن كلمات مرور الوصول إلى أي شخص آخر فكرة مشكوك فيها للغاية.

الحل للمشكلة الأولى هو تقنية بحتة - تثبيت شهادة مجانية لا يسبب الكثير من الصعوبة.

لكن الحل للمشكلة الثانية - لاستبعاد الكشف عن إعدادات الاتصال بقاعدة البيانات الخاصة بك - هو السؤال.

دعني أذكرك بأن جوهر المشروع هو عميل عبر الإنترنت لقاعدة بيانات الخلية. السؤال الرئيسي - الاتصال بقاعدة البيانات ، يسبب على الفور العديد من الصعوبات:

  1. الكشف عن معلمات اتصال قاعدة البيانات ؛
  2. حتى إذا تم الكشف عن المعلمات ، فليس من الحقيقة أنه يمكنك الاتصال بسبب قيود إدارية ، على سبيل المثال ، يُسمح فقط بالوصول المحلي إلى قاعدة البيانات.

في هذه الحالة ، يتم قطع تناقض فني (TP) على الوجه في نظام triz. من الضروري الكشف عن المعلمات من أجل الاتصال ، ولكن في نفس الوقت من المستحيل الكشف عن المعلمات للأمن. بالإضافة إلى ذلك ، فإن الكشف عن المعلمات لا يحل التعقيد الثاني - وجود قيود إدارية.

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

لذا ، في رحلة ، يمكنني قلب المهمة عقليًا رأساً على عقب. والبدء في حل المشكلة من الطرف الآخر.

  • كان كذلك. يريد الموقع الاتصال بقاعدة البيانات الداخلية الخاصة بك ، ويريد القيام بذلك دون الكشف عن كلمات مرور الوصول (النتيجة النهائية المثالية).
  • وإذا كان العكس صحيح. تريد قاعدة البيانات نفسها الاتصال بموقع جهة خارجية ، ولكن لا يمكنها القيام بذلك بسبب القيود الإدارية.

من ناحية ، ظهرت أغنية (أنت على الأرض ، أنا في البحر ... لا يمكننا أن نلتقي بأي شكل من الأشكال). من ناحية أخرى ، هناك قوتان تريدان الالتقاء ، لكنهما لا تستطيعان القيام بذلك.

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

من المهم أن نلاحظ هنا أن ظهور قوة ثالثة أمر لا غنى عنه. تمامًا كما هو الحال في triz - تحتاج إلى إدخال قوة ثالثة في النظام (يعتبر نظام ذو قوتين غير مكتمل) وإنهاء المثلث. عمل وكيل النيابة كقوة ثالثة وأحضر الصبي والفتاة.

مثال آخر من السياسة. هناك ألمانيا تريد شراء وقود أرخص. هناك إيران التي تريد بيع الوقود لألمانيا. لكن ألمانيا لديها قيود إدارية صارمة على إمدادات الوقود من إيران. ننتهي من نظام قوتين إلى مثلث كامل. نقدم القوة الثالثة - هذه هي روسيا. والتي يمكن أن تتفاعل مع كل من ألمانيا وإيران. ونتيجة لذلك ، تتفاعل ألمانيا تمامًا مع إيران ، من خلال وسائل النقل التي تمثلها روسيا.

لذا هناك حاجة لقوة ثالثة. نحن نقود القوة الثالثة إلى نظام غير كامل من قاعدة البيانات والعميل. سنستخدم سائقًا معينًا كوسيلة نقل ، والتي ستؤدي دور الإرسال (الكلمة هنا بالتأكيد وقحة ، ولكنها مناسبة تمامًا ، إذا لم تركز على الوقاحة).

نذكر متطلبات النقل للسائق. في الواقع ، هناك متطلبان فقط:

  1. يجب أن تتفاعل دون قيود مع كل من العميل وقاعدة البيانات ، بمثابة النقل
  2. يجب أن يكون قادرا على الاتصال بقاعدة البيانات

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

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

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

كود


header('Content-Type: text/html; charset=utf-8'); # Key $pass = 'KEY_PASS_FROM_DATAINCREMENT'; //change for youself # Connect parametres to mysql database $host = 'LOCALHOST'; //change for youself $user = 'USERNAME'; //change for youself $password = 'PASSWORD'; //change for youself $database = 'DATABASE_NAME'; //change for youself # Access if ( !isset($_POST['query']) ) die( 'no query' ); if ( @$_POST['pass'] != md5($pass) ) die( 'no pass' ); // if ( $_SERVER['REMOTE_ADDR'] != '185.229.9.9' ) die( 'no ip' ); # Connect $mysqli = new mysqli($host, $user, $password, $database); if ( $mysqli->connect_error ) { die( 'no connect: ' .$mysqli->connect_error ); } # Character $mysqli->set_charset( $mysqli->query("SHOW VARIABLES LIKE 'character_set_database'")->fetch_object()->Value ); # Query & Return if ( $result = $mysqli->query($_POST['query'], MYSQLI_USE_RESULT) ) { for ( $rows = array(); $r = $result->fetch_array(MYSQLI_ASSOC); $rows[] = $r ); $rows = json_encode($rows); $rows = gzdeflate($rows, 9); die( $rows ); } die( $mysqli->error ); 

هنا مثل هذا السائق البسيط. الآن يبقى هذا النص البرمجي ليتم وضعه في مكان ما على موقعك في مكان عشوائي. وقم بتسجيل برنامج التشغيل هذا على العميل - dataincrement.com الذي يحدد الاتصال بقاعدة البيانات الخاصة به.

وبالتالي ، اتضح الاتصال بقاعدة البيانات دون الكشف عن معلمات الاتصال من حيث المبدأ. وكذلك تجاوز القيود الإدارية. بالإضافة إلى ذلك ، تبين أن برنامج التشغيل بسيط للغاية ومفهوم بحيث يمكن تعديله بسهولة حسب الرغبة وتنفيذه بشكل مستقل بلغة أخرى ، إذا لزم الأمر. على سبيل المثال ، يمكنك إضافة محفوظات استعلام أو تقييد الوصول فقط من عنوان IP معين حرفيًا في سطرين إضافيين.

الخلاصة


في هذا المثال ، حاولت إظهار قوة الجائزة في حل التناقضات التي تبدو متناقضة. أعتقد أن الفطرة السليمة والمنشآت المنطقية التي يقوم عليها Trise وعلم المنطق يجب أن يحلوا عاجلاً أم آجلاً على هيمنة رجال الكنيسة ، الإنجيليين والدعاة. لمن لا يكون العمل رسالة ، ولا المشروع هو الإيمان بكل الخير مقابل كل السيئ.

Source: https://habr.com/ru/post/ar427723/


All Articles