III.2.4 Một số lớp và hàm chính được cài đặt trong chương trình

Một phần của tài liệu Nghiên cứu một số vấn đề về bảo mật ứng dụng web trên Internet (Nguyễn Duy Thắng vs Nguyễn Minh Thu) - 3 doc (Trang 35 - 40)

I. ĐẶC TẢ CHƯƠNG TRÌNH WEB CHECKER

III.2.4 Một số lớp và hàm chính được cài đặt trong chương trình

• Lớp CCheckerDlg

class CCheckerDlg : public CDialog {

public:

void getTestFile(); //Lấy dữ liệu mẫu kiểm

void markChecked(CString &); //đánh dấu vi trí kiểm tra

CString evaluateRslt(Result *); //phân tích kết quả void scanWeb(); //Kiểm tra trang Web

CArray < Result *, Result *> m_result; //Mảng chứa kết quả CArray < Test *, Test *> m_Test; //Mảng chứa dữ liệu mẫu kiểm

bool m_IsPost; // Loại yêu cầu POST/GET

CString m_sData; //Dữ liệu trong Header yêu cầu

CString m_HTTPbody; //Phần thân của HTTP trả lời

CString m_HTTPreceive; //Header trả lời

CString m_HTTPsend; //Header yêu cầu

...protected: protected:

afx_msg void OnBeforeNavigate2Explorer(LPDISPATCH, VARIANT FAR*, VARIANT FAR*, VARIANT FAR*, VARIANT FAR*, VARIANT FAR*, BOOL FAR*); //Hàm bắt sự kiện trên trình duyệt Web

Chương 13: Chương trình Web Checker

void Browse(); //Gửi/nhận thông với trình chủ void InsertHTML() //Hiển thị thông tin trả lời thành Web

};

Kế thừa từ lớp CDialog, ngoài nhiệm vụ quản lý dialog, lớp còn có chức năng sau:

- Thực hiện các yêu cầu duyệt Web của người dùng thông qua phương thức Browse().

- Hiển thị dữ liệu của biến m_HTTPbody thành trang Web thông qua phương thức InsertHTML().

- Phương thức getTextFile() đọc dữ liệu mẫu kiểm từ tập tin ngay khi chạy chương trình và lưu trữ trong mảng m_Test.

- Phương thức scanWeb() là phương thức chính được gọi khi người sử dụng chọn nút kiểm tra. Phương thức có chức gọi các hàm xử lý khác để kiểm tra trang Web, phân tích vàđưa ra kết quả.

• Lớp Checker

class Checker {

public:

void inject(CString &, int, CString );

//Chèn dữ liệu mẫu kiểm vào

CString getForumValue(int ,CString ,CString &,CString &, CString &); //Lấy dữ liệu trong form

Cstring getLinkValue(int ,CString, CString &,CString &)

//Lấy dữ liệu trong liên kết

Checker(); (adsbygoogle = window.adsbygoogle || []).push({});

virtual ~Checker(); ...

Chương 13: Chương trình Web Checker

};

Định nghĩa các phương thức:

- Lấy dữ liệu thực của các đối tượng cần kiểm như form/ liên kết trong trang sau đó sẽđược chương trình lần lượt chèn các mẫu kiểm thông qua phương thức inject(…) rồi gửi lên trình chủ.

- Chèn giá trị mẫu kiểm vào dữ liệu của form/ liên kết.

• Lớp Request class Request { public: Request(); virtual ~Request(); private:

void ParseURL(LPCSTR url,LPSTR protocol,int lprotocol, LPSTR host,int lhost,LPSTR request,int lrequest,int *port);

//Phân rã chuỗi URL

int SendHTTP(LPCSTR url,LPCSTR headers,BYTE *post, DWORD postLength,HTTPRequest *req);

//Mở kết nối, gửi HTTP yêu cầu và nhân HTTP trả lời

public:

void SendRequest(bool IsPost, LPCSTR url, CString

&psHeaderSend, CString &psHeaderReceive, CString &psMessage);

//Nếu yêu cầu là GET thì dùng cung cấp của ActiveX còn POST thì gọi hàmSend HTTP

...}; };

Chương 13: Chương trình Web Checker

- Phương thức SendHTTP được gọi thông qua các phương thức

SendRequest(…) và Browse(). Phương thức này có nhiệm vụ tạo kết nối

đến trình chủ, gửi yêu cầu và nhận thông điệp trả lời từ trình chủ . Các thông diệp nhận về sẽ được cập nhật vào biến toàn cục chính là m_HTTPsend,m_HTTPreceive, m_HTTPbody. • Lớp Test class Test { public: Test(); virtual ~Test();

CString m_errType; //Loại lỗ hổng

CString m_errName; //Tên lỗ hổng

CString m_strInject; //Chuỗi ký tự chèn

CArray <CString,CString> m_strRslt; //Các chuỗi kết quả };

Định nghĩa kiểu dữ liệu mẫu kiểm. Dữ liệu sẽđược đọc từ tập tin test.txt.

Định dạng của tập tin test.txt: Chuỗi kí tự sẽ chèn vào Các mẫu kết quảđể phát hiện lỗi Số thứ tự lỗi Tên lỗi

%27\1 incorrect syntax\1unclosed quotation mark\1 1\2 SQL Injection ... ... ... ... Các kí tự “\1”, “\2” dùng để phân cách chuỗi. • Lớp Result

Chương 13: Chương trình Web Checker class Result { public: Result(); virtual ~Result();

CString m_object; //Đối tượng kiểm tra

int m_ind; //vị trí trong trang Web (adsbygoogle = window.adsbygoogle || []).push({});

CString m_properties; //thuộc tính của đối tượng

CArray <CString,CString> m_err; //Mảng danh sách lỗi nếu có

};

Định nghĩa kiểu dữ liệu kết quả, có nhiệm vụ lưu trữ kết quả kiểm tra của trang Web và được kết xuất ra màn hình chương trình khi kiểm tra xong trang

Chương 13: Chương trình Web Checker

III.3. MÔ T CHƯƠNG TRÌNH VÀ CÁCH S DNG

Một phần của tài liệu Nghiên cứu một số vấn đề về bảo mật ứng dụng web trên Internet (Nguyễn Duy Thắng vs Nguyễn Minh Thu) - 3 doc (Trang 35 - 40)