
مشروع Java معيب بشكل خطير لتدريس مفاهيم Owasp Top 10 - 2017.
DO NOT USE ANY PART OF THIS CODE IN PRODUCTION.
ستجلب لك هذه التعليمات نسخة من المشروع وتشغيلها على جهازك المحلي لأغراض التطوير والاختبار.
ستحتاج:
تثبيت JDK ، وتكوين متغيرات البيئة JAVA_HOME PATH بشكل صحيح. يتم توفير بعض الإرشادات في منشور Stackoverflow هذا.
افتح موجه الأوامر ، وتأكد من أن كل شيء يعمل بسلاسة:

unzip mysql ، وانتقل إلى دليل bin . قم بتنفيذ الأمر التالي ( غير موصى به لبيئات الإنتاج):
mysqld --initialize-insecure
يقوم هذا الأمر بتهيئة دليل البيانات ، ويقوم بإنشاء حساب SuperUser 'root'@'localhost' مع كلمة مرور فارغة.
لتثبيت الخدمة على أجهزة Windows ، قم بتشغيل:
mysqld --install
أخيرًا ، لبدء الخدمة ، قم بتشغيل:
sc start mysql
للتحقق مما إذا كان التثبيت ناجحًا ، قم بإصدار أمر mysql -uroot : 
اكتب exit ، واضغط على Enter للخروج من وحدة التحكم MySQL.
نحتاج إلى إنشاء نموذج لقاعدة بيانات العينة الخاصة بنا ، وملبئها باستخدام نموذج البيانات. يسمى ملف SQL TestDB.SQL. قم بتنزيله على دليل MySQL bin ، ومن هناك قم بتنفيذ الأمر التالي:
mysql -uroot < testdb.sql
إذا سارت الأمور بسلاسة ، فيمكنك إصدار الأوامر ورؤية النتائج كما هو موضح أدناه:

أخيرًا ، قم بتغيير كلمة مرور root إلى 123456 ، حيث لن يتم قبول كلمات المرور الفارغة بواسطة Payara Server (الخطوة التالية). لاحظ أن كلمة المرور نفسها ، وكذلك الطريقة التالية لتغيير كلمة المرور ، غير آمنة تمامًا :
mysqladmin --user=root password "123456"
قم بتنزيل واستخراج خادم Payara ، وكذلك MySQL Connector/J. لقد استخرجت الأخير إلى C:tmpmysql-connector-java-8.0.18.jar .
تأكد من اتباع التعليمات لتثبيت وتكوين JDK-11. ابدأ خادم Payara باستخدام الأمر التالي:
asadmin start-domain
بعد ذلك ، قم بتثبيت MySQL Connector/J:
asadmin add-library C:tmpmysql-connector-java-8.0.18.jar
إليك لقطة حول كيف يجب أن تبدو الأشياء:

افتح وحدة التحكم على الويب Payara ، وانتقل إلى Resources → JDBC → JDBC Connection Pools . انقر فوق بوتون New .

للخطوة 1 ، املأ المعلومات بالضبط على النحو التالي:

للخطوة 2 ، قم بالتمرير لأسفل حتى ترى Additional Properties :

يجب عليك تعيين الخصائص التالية (مرتبة أبجديًا):
allowPublicKeyRetrieval - ما إذا كان يُسمح للعميل بطلب المفتاح العام تلقائيًا من الخادم. ضبط على true . (غير موصى به في بيئات الإنتاج)DatabaseName - اسم قاعدة البيانات التي تريد الاتصال بها. في هذه الحالة ، testdb .Password : كلمة المرور للمستخدم المحدد. هنا ، إنه 123456 .ServerName : موقع خادم MySQL. في هذه الحالة localhost .sslMode : ما إذا كان SSL يستخدم للاتصال بخادم MySQL. اضبطه على DISABLED . (غير موصى به في بيئات الإنتاج)URL وعنوان Url : عنوان URL JDBC ليتم استخدامه. هنا ، قم بتعيينه على jdbc:mysql://localhost:3306/testdb .User : اسم المستخدم للاتصال بقاعدة البيانات. هنا ، إنه root . اضغط على زر Finish . انقر فوق تجمع الاتصال الذي تم إنشاؤه حديثًا. في علامة التبويب General ، انقر فوق زر Ping . إذا سار كل شيء بشكل صحيح ، فيجب أن ترى ما يلي:

وبالمثل ، قم بإنشاء تجمع اتصال آخر يسمى MySQL_readonly_Pool . الخطوة 1 هي نفس تجمع الاتصال السابق. للخطوة 2 ، اضبط Additional Properties على النحو التالي:
allowPublicKeyRetrieval: true .DatabaseName: testdb .Password: MyVeryLongPassphrase .ServerName: localhost .sslMode: DISABLED .URL: jdbc:mysql://localhost:3306/testdb .Url: jdbc:mysql://localhost:3306/testdb .User: readonly . نحن بحاجة إلى إعداد موارد JDBC. انتقل إلى Resources → JDBC → JDBC Resources ، وانقر فوق New . املأ النموذج على النحو التالي:
JNDI Name: jdbc/MySQL_root_DataSourceConnection Pool: MySQL_root_Pool
وبالمثل ، افعل ذلك لمجموعة الاتصال الثانية:
JNDI Name: jdbc/MySQL_readonly_DataSourceConnection Pool: MySQL_readonly_Poolأخيرًا ، قم بإصدار الأمر التالي لإيقاف خادم Payara.
asadmin stop-domain
يتم ذلك لأن Idea Intellij تبدأ تلقائيًا الخادم.
افتح المشروع في فكرة Intellij. يعلمك أن Web framework is detected :

انقر فوق Configure لفتح نافذة Setup Frameworks . ثم ، ما عليك سوى النقر فوق "موافق":

حدد Run → Edit Configurations... فتح Templates → GlassFish Server → Local . انقر فوق Configure :

حدد GlassFish Home . إذا تم تحديده بشكل صحيح ، فسوف يكتشف Intellij تلقائيًا GlassFish Version :

انقر فوق OK . من مربع المنسدلة Server Domain ، حدد domain1 .

انقر فوق Apply . لديك الآن قالب Glassfish مناسب يمكنك استخدامه عبر مشاريع متعددة. ولكن بالنسبة لكل مشروع ، تحتاج إلى تكوين "قطعة أثرية" ليتم استنشاقها. تحقيقًا لهذه الغاية ، انقر فوق + في أعلى اليسار ، وحدد GlassFish Server → Local :

في الأسفل ، يحذرك Intellij من No artifacts configured . ببساطة انقر على زر Fix .

ثم ، في نافذة Artifacts ، انقر فوق علامة + ، واختر Web Application Exploded → From Modules

اختر الوحدة النمطية المتوفرة الوحيدة ، أي ، OWASP-JAVA ، وانقر فوق "موافق".

انقر فوق "موافق" للعودة إلى Run/Debug Configurations . في الأسفل ، سترى تحذيرًا آخر: Debug settings are invalid or not suitable for local debugging . انقر فوق الزر Fix ، وسوف يعتني Intellij بذلك من أجلك.

يمكنك الآن تشغيل المشروع. يفتح Intellij تلقائيًا متصفحك الافتراضي ، ويتنقل إلى http://localhost:8080/OWASP_Java_war_exploded/ :

أدخل بيانات الاعتماد التالية:
kambiz1إذا كان كل شيء يعمل بشكل صحيح ، فستتم إعادة توجيهك إلى الصفحة الرئيسية للمستخدم:

خلاف ذلك ، قد تحتاج إلى إلقاء نظرة على سجلات الأسماك الزجاجية ، كما ذكرت شركة Intellij ، لمعرفة الخطأ الذي حدث.

بالمناسبة ، أستخدم البرنامج المساعد GREP Console لتحليل السجلات أسهل.