
โครงการ Java ที่มีข้อบกพร่องอย่างจริงจัง สำหรับการสอนแนวคิด Top 10 - 2017
DO NOT USE ANY PART OF THIS CODE IN PRODUCTION.
คำแนะนำเหล่านี้จะช่วยให้คุณได้รับสำเนาของโครงการและทำงานบนเครื่องในพื้นที่ของคุณเพื่อการพัฒนาและการทดสอบ
คุณจะต้อง:
ติดตั้ง JDK และกำหนดค่าตัวแปรสภาพแวดล้อม JAVA_HOME และ PATH อย่างถูกต้อง แนวทางบางอย่างมีอยู่ในโพสต์ Stackoverflow นี้
เปิดพรอมต์คำสั่งและตรวจสอบให้แน่ใจว่าทุกอย่างทำงานได้อย่างราบรื่น:

คลายซิป mysql และไปที่ไดเรกทอรี bin ดำเนินการคำสั่งต่อไปนี้ ( ไม่แนะนำ สำหรับสภาพแวดล้อมการผลิต):
mysqld --initialize-insecure
คำสั่งนี้เริ่มต้นไดเรกทอรีข้อมูลและสร้างบัญชี 'root'@'localhost' ด้วยรหัสผ่านที่ว่างเปล่า
ในการติดตั้งบริการบนเครื่อง Windows Run:
mysqld --install
ในที่สุดเพื่อเริ่มบริการ Run:
sc start mysql
หากต้องการตรวจสอบว่าการติดตั้งนั้นประสบความสำเร็จให้ออกคำสั่ง mysql -uroot : 
พิมพ์ exit และกด Enter เพื่อออกจากคอนโซล MySQL
เราจำเป็นต้องสร้างฐานข้อมูลตัวอย่างของเราและเติมข้อมูลด้วยข้อมูลตัวอย่าง ไฟล์ SQL เรียกว่า testdb.sql ดาวน์โหลดไปยังไดเรกทอรี mysql bin และจากที่นั่นเรียกใช้คำสั่งต่อไปนี้:
mysql -uroot < testdb.sql
หากทุกอย่างเป็นไปอย่างราบรื่นคุณสามารถออกคำสั่งและดูผลลัพธ์ตามที่แสดงด้านล่าง:

สุดท้ายเปลี่ยนรหัสผ่าน root เป็น 123456 เนื่องจากรหัสผ่านที่ว่างเปล่าจะไม่ได้รับการยอมรับจากเซิร์ฟเวอร์ Payara (ขั้นตอนต่อไป) ขอให้สังเกตว่ารหัสผ่านนั้นเองรวมถึงวิธีการเปลี่ยนรหัสผ่านต่อไปนี้ ไม่ปลอดภัยโดยสิ้นเชิง :
mysqladmin --user=root password "123456"
ดาวน์โหลดและแยกเซิร์ฟเวอร์ Payara รวมถึง MySQL Connector/J ฉันสกัดหลังเป็น C:tmpmysql-connector-java-8.0.18.jar
ตรวจสอบให้แน่ใจว่าคุณทำตามคำแนะนำสำหรับการติดตั้งและกำหนดค่า JDK-11 เริ่มเซิร์ฟเวอร์ Payara โดยใช้คำสั่งต่อไปนี้:
asadmin start-domain
ถัดไปติดตั้งตัวเชื่อมต่อ MySQL/J:
asadmin add-library C:tmpmysql-connector-java-8.0.18.jar
นี่คือภาพรวมของสิ่งที่ควรมีลักษณะ:

เปิดคอนโซลเว็บ Payara และนำทางไปยัง Resources → JDBC → JDBC Connection Pools คลิก Buttton New

สำหรับขั้นตอนที่ 1 ให้กรอกข้อมูลดังนี้:

สำหรับขั้นตอนที่ 2 เลื่อนลงจนกว่าคุณจะเห็น Additional Properties :

คุณต้องตั้งค่าคุณสมบัติต่อไปนี้ (เรียงลำดับตัวอักษร):
allowPublicKeyRetrieval - ไคลเอ็นต์ได้รับอนุญาตให้ขอคีย์สาธารณะจากเซิร์ฟเวอร์โดยอัตโนมัติหรือไม่ ตั้งค่าเป็น true (ไม่แนะนำในสภาพแวดล้อมการผลิต)DatabaseName - ชื่อของฐานข้อมูลที่คุณต้องการเชื่อมต่อ ในกรณีนี้ testdbPassword : รหัสผ่านสำหรับผู้ใช้ที่ระบุ ที่นี่คือ 123456ServerName : ตำแหน่งของเซิร์ฟเวอร์ MySQL ในกรณีนี้ localhostsslMode : SSL ใช้สำหรับการเชื่อมต่อกับ MySQL Server หรือไม่ ตั้งค่าเป็น DISABLED (ไม่แนะนำในสภาพแวดล้อมการผลิต)URL และ Url : URL JDBC ที่จะใช้ ที่นี่ตั้งค่าเป็น jdbc:mysql://localhost:3306/testdbUser : ชื่อผู้ใช้สำหรับการเชื่อมต่อกับฐานข้อมูล ที่นี่มันเป็น root กดปุ่ม Finish คลิกพูลการเชื่อมต่อที่สร้างขึ้นใหม่ ในแท็บ General คลิกปุ่ม Ping หากทุกอย่างถูกต้องคุณควรเห็นสิ่งต่อไปนี้:

ในทำนองเดียวกันสร้างพูลการเชื่อมต่ออื่นที่เรียกว่า MySQL_readonly_Pool ขั้นตอนที่ 1 เหมือนกับพูลการเชื่อมต่อก่อนหน้า สำหรับขั้นตอนที่ 2 ตั้ง Additional Properties ดังนี้:
allowPublicKeyRetrieval: trueDatabaseName: testdbPassword: MyVeryLongPassphraseServerName: localhostsslMode: DISABLEDURL: jdbc:mysql://localhost:3306/testdbUrl: jdbc:mysql://localhost:3306/testdbUser: 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
สิ่งนี้ทำได้ตั้งแต่ Intellij Idea เริ่มเซิร์ฟเวอร์โดยอัตโนมัติ
เปิดโครงการในแนวคิด 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 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 สำหรับการวิเคราะห์บันทึกง่ายขึ้น