[Pen.Test] วิธีการสแกนช่องโหว่ Web Application ด้วยโปรแกรม OWASP ZAP

อันดับแรก ดาวน์โหลดโปรแกรมมาติดตั้งบนเครื่องคอมพิวเตอร์ได้จากเว็บ https://www.zaproxy.org จากนั้นมาเริ่มเปิดใช้โปรแกรมกันเลย คำเตือน!! ควรทำการ Scan ในเว็บไซต์ที่เราเป็นเจ้าของ หรือได้รับอนุญาตแล้วเท่านั้น เมื่อเปิดใช้งานครั้งแรก โปรแกรมจะถามเราว่าจะบันทึก Session การสแกนไว้หรือไม่ จากนั้นกด Start**แนะนำให้เลือกบันทึกเอาไว้เพื่อมาตรวจสอบในภายหลังได้ Automated Scan ใน Panel Quick Start คลิ๊กเลือก Automated Scan 2. ระบุ Url ที่ต้องการสแกนลงในช่อง URL to Attack จากนั้นกดปุ่ม Attack ด้านล่าง และรอจนการสแกนเสร็จสิ้นทั้งหมด Manual Explore ใน Panel Quick Start คลิ๊กเลือก Manual Explore 2. ระบุ Url ที่ต้องการเริ่มต้นเข้าไปสแกนลงในช่อง URL to explore จากนั้นกดปุ่ม Launch Browser 3. […]

Prajak B

February 24, 2022

จัด UI Layout กับ Thymeleaf

จัด Layout ด้วย Thymeleaf-layout-dialect ถ้าใครเคยเรียน Design Pattern มาสิ่งที่ thymeleaf ทำ คือ View แต่ละอันทำหน้าที่ของตัวเองพอ แสดง Content ในส่วนที่รับผิดชอบ ส่วนการจัดการพวกเมนู และอื่นๆ จะถูกเพิ่มความสามารถ(Declorate) เข้าไปจากตัว Layout ครับ ตัว Design Pattern ที่ผมหมายถึง คือ Decorator pattern ครับ มาดูโจทย์กันก่อน เว็บปกติจะมีจุดที่มันมี Code ซ้ำ จะ Reuse ยังไง ผมแยก 2 ส่วนนะครับ Header, Content และเพิ่ม Footer ตามรูปครับ สิ่งที่ต้องมี Spring Boot+Thymeleaf project ตรวจสอบ Dependency ให้ดีต้องมี thymeleaf <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> thymeleaf-layout-dialect […]

Prajak B

July 14, 2020

Thymeleaf – Spring Boot

หลายๆคนอาจจะรู้สึกว่าการพัฒนาเว็บโดยใช้ Java เนี่ยยุ่งยากนอกจากจะต้องรู้ภาษา Java แล้วยังต้องใช้ JSP(JavaServer Page) ในการพัฒนาหน้าเว็บอีกซึ่งมันก็มี Tag ที่วุ่นวาย ดังนั้นทีมพัฒนาก็เลยสร้าง Library ที่เรียกว่า “Thymeleaf” ขึ้นมา Thymeleaf คืออะไร? Thymeleaf ก็คือ “Template Engine” ตัวนึงที่ทำงานร่วมกับ Spring ได้ดี โดยการเพิ่ม Tag พิเศษของมันเข้าไปใน HTML tag ถ้าเราไม่ได้รันผ่านตัว Thymeleaf ก็จะเห็นเป็นหน้า HTML ธรรมดา เตรียมความพร้อม สิ่งที่ต้องการ Java 8 IDE ที่ถนัดสักตัว (เช่น Eclipse, Netbean, IntelliJ) เริ่มสร้าง Spring Boot Project สำหรับการสร้าง Spring Boot จะมีเครื่องมือที่ชื่อ “SPRING INITIALIZR” เป็นตัวอำนวยความสะดวกให้ […]

Prajak B

July 14, 2020

Lombok

Lombok เป็นหนึ่งในเครื่องมือสำคัญและเป็นที่นิยมของชาว Java ทั้งหลาย เพราะจะมาช่วยสร้าง boilerplate code ให้จะทำให้โค้ดเราดูสั้นอ่านง่ายมากขึ้น และทำให้เขียนโปรแกรมได้เร็วมากขึ้น Lombok จะสร้าง boilerplate code ตอนเวลา compile Install Lombok สามารถใช้ dependency management ทั้ง Maven และ Gradle ดังตัวอย่าง pom.xml ของ Maven ด้านล่าง @Getter/Setter การเขียนโปรแกรมแบบ OOP เราจะต้อง encapsulate field ของ class เอาไว้จำกัดการเข้าถึงจากภายนอก ดังนั้นจะต้องมี Getter/Setter เพื่อใช้ในการเข้าถึงหรือมีเงื่อนไขในการตั้งค่า จะทำให้โค้ดส่วนนี้มีมากแปรผันตรงกับจำนวนของ field แต่ Lombok มี annotation ที่มาช่วยให้เราสร้าง Getter/Setter ให้ด้วย @Getter และ @Setter จะเห็นได้ว่าจะลดโค้ดส่วนของ Getter/Setter […]

Prajak B

March 24, 2020

[Spring Boot] การเชื่อมต่อ database ด้วย Spring data JPA

JPA คืออะไร ก่อนอื่นก็ต้องมาพูดถึงไอ่เจ้าตัว JPA ก่อนเลยว่ามันคืออะไร มีไว้ทำอะไร JPA เป็นมาตรฐานหรือแนวทางในการทำ ORM (Object Relational Mapping) เช่น เคยเห็นพวก class java ของเราใช่มะ คือ JPA อ่ะ จะเป็นตัวบอกว่าเราจะต้องทำยังไงบ้างเพื่อที่จะเชื่อมต่อ java class ให้ไปเป็น table หรือ column ที่อยู่ใน database ของเรา โดยส่วนใหญ่ใน spring เนี่ย มันจะมีสิ่งที่เรียกว่า Hibernate ให้ใช้อยู่ และ Hibernate ได้ทำการ implement ตาม JPA ไว้เรียบร้อยแล้ว การดำเนินการเชื่อมต่อข้อมูลกับ database เพิ่ม JPA module ไว้ในโปรเจคของเราก่อน โดยการใส่โค้ดด้านล่างไว้ใน pom.xml ของโปรเจคภายใต้ tag <dependencies> 2. […]

Prajak B

March 24, 2020

[Spring Boot] การวางโครงสร้าง Project

โครงสร้างโปรเจ็คแบบ MVC+S โครงสร้างโปรเจคและการวาง package จะไม่ตายตัวขึ้นอยู่กับการใช้งานแต่ส่วนใหญ่ที่ใช้กันจะเป็นแบ่งหลักๆ ตาม concept ของ MVC+S ได้ดังภาพ package Controller เก็บ class Controller (@Controller) สำหรับส่วนที่ทำหน้าที่เป็นสมองส่วนกลาง ประสานข้อมูลระหว่าง Model Service และ View คือ รับ input มาจาก user แล้วก็ตัดสินใจ หรือ ประมวลผลว่า จะทำอะไรยังไงต่อ จากนั้นส่งค่า output กลับไปให้ user package Entity หรือ Model เก็บ class โครงสร้างข้อมูลตาม schema (@Entity) คือ ส่วนที่ทำหน้าที่เป็นรูปร่างลักษณะข้อมูลของเราว่าจะมีหน้าตาเป็นยังไงมีฟิลด์อะไรบ้าง package Repository เก็บ class Repository (@Repository) คือ ส่วนที่เชื่อมต่อ Database […]

Prajak B

March 23, 2020

[Spring Boot] สร้างโปรเจ็คเบื้องต้นบน IntelliJ IDEA

การสร้าง Spring Boot Project เปิดโปรแกม IntelliJ ไปที่เมนู File > Project… หรือ ในหน้า Welcome ของ IntelliJ เลือก + Create New Project เลือก Spring Initializer ตรวจสอบหรือปรับแก้ Project SDK แล้วกด Next  รอโหลดสักครู่ จากนั้นกรอกข้อมูล Project Metadata แล้วกด Next Group: เป็นชื่อโดเมนที่เกี่ยวข้องกับโปรเจ็ค Artifact: เป็นชื่อโมดูลหรือโปรเจ็ค Packaging: เลือกเป็น war Description: กำหนดรายละเอียดคำอธิบายโปรเจ็ค (Optional) เลือก Dependencies ที่ต้องการใช้งาน แล้วกด Next Spring Boot : เลือก version ที่ต้องการ […]

Prajak B

March 13, 2020