3.2.5.5 Một vài thuật tốn
Mã hóa một chiều mật khẩu với salt
Khi lưu trữ password vào CSDL thường sẽ sử dụng các hàm băm khác nhau được hỗ trợ bởi hệ CSDL hoặc ngơn ngữ lập trình (như MD5) để tạo dữ liệu mã hóa, dữ liệu mã hóa đó được lưu vào CSDL. Ví dụ:
$crypt = md5($raw_password); //e99a18c428cb38d5f260853678922e03
Bởi vì hàm băm tạo ra các giá trị không thể dịch ngược chỉ duy nhất một cách là thử. Nếu sử dụng các mật khẩu yếu, nó có thể bị dị ra dựa trên giá trị băm của các mật khẩu phổ biến biết trước. Như trường hợp trên khi thấy e99a18c428cb38d5f260853678922e03 thì đốn được password là abc123. Để khắc phục điều này có thể sử dụng đến salt.
Sử dụng Salt tăng cường an toàn cho mật khẩu.
Để phức tạp hóa mật khẩu lưu trữ, thì các mật khẩu gốc trước khi mã hóa được nối thêm các chuỗi, các chuỗi thêm này gọi là salt.
$crypt = md5($raw_password.$salt);
Giờ mật khẩu lưu trữ ở trên phức tạp hơn rất nhiều. Biết được $crypt đoán ra $raw_password là rất khó, kể cả khi là password yếu. Khó mà xây dựng được một từ điển chứa các mã hóa tương ứng với password.
Mã hóa hai chiều mật khẩu với mã hóa Cesar
Với mật khẩu của người dùng tại các trang TMĐT, nếu hệ thống chỉlưu ở dạng chuỗi nguyên bản sẽ rất rủi ro về bảo mật. Khó ai có thểđưa mật khẩu để hệthơng lưu trữ mà khơng có hàm mã hóa nào cả. Tác giả xây dựng hàm mã hóa dựa trên thuật tốn mã hóa Cesar như sau:
function encrypt($string) {
$loop = rand(1, 10); // lấy ngẫu nhiên 1 số từ 1 đến 10 $res = "";
for ($i = 0; $i < $loop; $i++) { //lặp n lần
$num = rand(1, 26); // tìm ngẫu nhiên số từ 1 đến 26 $numa = $num+96;
$first = chr($numa); //tìm kí tựtương đương trong ASCII
$res .= $first.$this->Encipher($string, $num); // mã hóa cesar chuỗi đầu với số ngẫu nhiên, nối kí tựvào đầu
}
$loop_char = chr($loop+96);
return $loop_char.$res; // Nối kí tựtương đương loop vào đầu }
Về độ an tồn thì thuật tốn khơng an tồn tuyệt đối nhưng cũng tránh hiển thị mật khẩu tại các giao diện.
3.3. Xây dựng các giao diện
Giao diện trang thống kê
Giao diện này để giúp cho người sử dụng nắm bắt được các thông tin - Số lượng sản phẩm đã đăng lên các sàn
- Thống kê được lượt đăng sản phẩm theo tháng, quý, năm - Thống kê sản phẩm theo danh mục
Hình 3-15: Giao diện trang thống kê
Giao diện trang danh sách sản phẩm
Đây là giao diện quản trị rất phổ biến bao gồm: - Hiển thị danh sách các sản phẩm
- Có 1 đường dẫn (Nút chọn) để tạo sản phẩm mới
- Mỗi sản phẩm lại có thêm đường dẫn để sửa hoặc xóa sản phẩm
- Mỗi sản phẩm có 1 danh sách các sàn mà người dùng đang bán hàng, khi bấm vào tên mỗi sàn thì sẽ bật hoặc tắt chức năng đồng bộ sản phẩm lên sàn đó
Hình 3-16: Giao diện trang danh sách sản phẩm
Giao diện thêm sản phẩm
Tại đây người dùng có thể nhập các thơng tin về sản phẩm
Giao diện quản lý tài khoản
Tại đây người dùng sẽ nhập tên đăng nhập và tài khoản cho các sàn thương mại điện tử, trong trường hợp người dùng không muốn bán hàng trên 1 sàn nào đó thì có thể chọn tắt tài khoản trên sàn đó đi.
Hình 3-18: Giao diện trang quản lý tài khoản
Mật khẩu của người dùng được mã hóa và lưu trữ trên server. Hàm mã hóa là hàm được cài đặt theo thuật tốn mã hóa Cesar.
Giao diện quản lý danh mục
Danh mục có các chức năng cơ bản như thêm, sửa xóa danh mục. Một danh mục bao gồm một định danh chính (khơng trùng lặp) và các giá trị danh mục tại mỗi sàn. Ví dụ một danh mục chung cho 3 sàn Tiki, Sendo, Shopee là Áo nam thì định danh trên các sàn cụ thể như sau:
- Tiki: Thời Trang > Thời trang nam > Trang phục nam > Áo khoác nam - Shopee: Thời Trang Nam > Áo khoác & Áo vest > Áo khoác phao
- Sendo: Thời trang nam > Áo khoác nam > Áo khoác phao nam
Nếu 1 sản phẩm chưa có giá trị danh mục trên sàn nào thì sản phẩm đó cũng khơng thể được đồng bộ lên sàn đó. Vì vậy q trình ghép cặp giữa các danh mục giữa các sàn phải được cập nhật thường xuyên bởi người quản trị.
Hình 3-19: Giao diện trang quản lý danh mục
Giao diện cài đặt khác
Mục đích chính của trang này là quản lý các cài đặt mặc định của người dùng như:
- Giá trị mặc định của một sản phẩm: có những cửa hàng ln nhập một sốlượng nhất định hàng hóa, khi giá trịnày được cài đặt thì họ sẽ khơng cần nhập giá trị này ở ô đăng sản phẩm nữa
- Thời điểm bán hàng trên một sàn nào đó. Khi cài đặt giá trị này thì chỉ trong thời gian cài đặt sản phẩm mới được đồng bộ nên sàn này, ngược lại chức năng đồng bộ bị tắt bỏ.
Hình 3-20: Giao diện trang giá trị mặc định
Giao diện danh sách các hành động mẫu
Giao diện này là vơ hình với người dùng cuối nhưng lại vô cùng quan trọng với người quản trị hệ thống. Tại giao diện này người quản trị có thể chạy thử một vài hành đồng để kiểm tra các hành động có được thực hiện đúng khơng, nếu chưa đúng thì có chỉnh sửa trực tiếp tại giao diện này. Các thơng tin chính gồm có
- Website: là tên của sàn TMĐT mà hành động thực hiện - Version: là tên phiên bản của tập các hành động
- Danh sách các hành động
- Chi tiết các bước của hành động hình
Tồn bộ các dữ liệu này đượu lưu trữ tại server thông qua việc trao đổi dữ giữa sử dụng các API.
Hình 3-21: Giao diện ứng dụng các hành động mẫu
Giao diện trang chi tiết hành động
Mỗi hành động sẽ gồm nhiều bước, mỗi đơn vị bước nhỏ nhất sẽ là một hàm gọi AutoIT hoặc Selenium
Ví dụ như trên là bộ hành động set thuộc tính, Với mỗi sản phẩm sẽ có những thuộc tính như Đơn vị là cái, chiếc hay bộ, khối lượng của sản phẩm. Với 3 bước thực tế của người dùng thì sẽ sinh ra 10 bước thao tác bằng Selenium hoặc AutoIT.
Giao diện khi người dùng cuối đồng bộ sản phẩm
Hình 3-23: Giao diện ứng dụng khi chạy thêm sản phẩm
3.4. Cài đặt và thử nghiệm Phần cứng Phần cứng Yêu cầu về máy chủ: - Ram: 16GB - Bộ nhớ trong: 1TB - CPU 24 core - Tốc độ mạng 100MHz Phần mềm
- Máy tính cài hệ điều hành Window server 2012 - Apache 2.4.41
- MariaDB 10.4.8 - PHP 7.3.10
- phpMyAdmin 4.9.1 - Dotnet framework 4.0 - AutoIT 3.0
- Selenium Web Driver - Chromedriver
Mặc dù tính khả thi của việc giải quyết bài tốn đã được chứng mình, nhưng do đặc thù của mỗi sàn thương mại điện tử khác nhau nên quá trình tạo script cho mỗi sang lại có những vẫn đề khác nhau như:
Lazada.vn: trang này có rất nhiều biện pháp để chống spam sản phẩm lên
trang, ví dụnhư nhận dạng được trình duyệt là trình tựđộng hoặc hành động nhập dữ liệu là của autobot. Khi đó trang lazada sẽ khóa chức năng đăng nhập và yêu cầu người dùng kéo trượt để mở khóa. Giải pháp đề ra là không dùng selenium mà AutoIT để giả lập y hệt thao tác của người dùng
Shopee.vn: Trang này cũng nhận dạng được trình duyệt tự động giống như Lazada nên giải pháp đặt ra là sử dụng AutoIT để giả lập thao tác người dùng.
Tiki.vn: Form nhập của tiki.vn nhập thông tin sản phẩm theo kiểu wizard
setup, tức là tồn bộ q trình nhập thơng tin sản phẩm được chia thành nhiều bước và mỗi bước là 1 màn hình. Vậy nên các hành động sẽ phức tạp hơn so với các trang nhập thông tin đơn.
Sendo.vn: Tác giả khơng gặp khó khăn gì trong việc sử dụng Selenium để
điều khiển.
Vatgia.com: Trang này rất đơn giản, số lượng trường nhập cũng ít nên khơng gặp khó khăn gì.
3.5. Kết quả
Thời gian đăng sản phẩm lên Tiki là 2 phút 1 sản phẩm, lên Shopee là 1 phút 50 giây, với Vật giá là 1 phút. Với lazada là 3 phút.
3.6. Định hướng phát triển trong tương lai
Hiện tại admin đang thống kê số lượng người dùng, số lượng sản phẩm của hệ thống bằng việc lọc cơ sở dữ liệu. Việc làm này tốn khá nhiều thao tác và yêu cầu người quản trị phải có 1 chút kiến thức về truy vấn cơ sở dữ liệu. Vậy nên thời gian tới tác giả dự định sẽ xây dựng 1 trang quản trị nhỏ giúp cho người quản trị hệ thống thông kê được dễ dàng hơn.
Hiện tại hệ thống mới chỉ hỗ trợ đăng sản phẩm lên các sàn. Vì các thao tác được thực hiện như người dùng thật nên gần như khơng có giới hạn các thao tác. Tác giả dự kiến sẽ hỗ trợ 1 số thao tác khác như:
- Sửa thông tin sản phẩm trên sàn - Xóa bỏ sản phẩm.
Sau khi xây dựng mơ hình mẫu của hệ thống và đã chứng minh được tính khả của hệ thống thì tác giả thấy hệ thống đang có 1 vấn đề khá lớn đó là hiệu năng của hệ thống rất chậm do việc thực hiện thao tác giả lập người dùng là tuần tự. Để giải quyết vấn đề này có 2 giải pháp được đề xuất đó là:
-Thực hiện các thao tác theo mơ hình đa luồng, tức là có nhiều hơn 1 luồng thực hiện thao tác trong 1 thời điểm. Giải pháp này rất hay nhưng khơng thực hiện được do trình quản lý thao tác sử dụng cả AutoIT và Selenium, khi sử dụng AutoIT thì trình điều khiển chiếm chuột để theo tác. Nếu có hơn 1 trình u cầu sử dụng chuột tại một thời điểm sẽ xảy ra xung đột và gây ra việc thực hiện các thao tác sai.
-Phát triển hệ thống theo mơ hình phân tán, trong đó 1 máy chủ chịu trách nhiệm master sẽ xử lý thông tin để đưa ra các tập thao tác (lưu trữ dưới dạng mã
kịch bản) sau đó chuyển đi cho các máy chủ Slave thực hiện như hình bên dưới. Phương pháp này giải quyết triệt để được vấn đề về hiệu năng nhưng cần cân nhắc vấn đề về chi phí, hiệu quả.
Ngồi ra Server Farm cịn giải quyết được một vấn đề lớn nữa đó là các trang chặn nếu gửi quá nhiều request từ 1 địa chỉ IP. Một số trang web ngày này sẽ thiết lập các chính sách để tránh việc bị bot (máy tự động) tấn công. Phương pháp khá phổ biển là lọc địa chỉ nguồn, nếu thấy từ một địa chỉ nguồn gửi đến quá nhiều request (u cầu) thì máy chủ có thể từ chối phục vụ.
CHƯƠNG 4. KẾT LUẬN
Tự động hóa q trình làm việc để giảm thời gian và công sức luôn là yêu cầu cần thiết trong cuộc sống. Với sự phát triển mạnh mẽ của Thương mại điện tử, việc đăng một sàn phẩm lên nhiều sàn TMĐT là điều rất phổ biến. Đã có một vài giải pháp được đưa ra để giải quyết bài tốn nhưng chưa có lời giải nào hồn thiện. Ví dụ như sử dụng API để truyền thông tin sản phẩm lên các sàn TMĐT. Tuy nhiên, API thì dễ gặp phải những vấn đề về phiên bản và không khả thi cho người quản trị hệ thống chưa có kỹnăng về lập trình
Luận văn tốt nghiệp đã trình bày chi tiết, cụ thể về một cách tiếp cận khác để giải quyết bài toán. Bằng việc tự động giả lập hành vi của người dùng cuối các sàn TMĐT nếu không sử dụng capcha hoặc mật khẩu nhiều lớp thì sẽ khó mà ngăn cản được việc đăng sản phẩm tự động. Từ thực nghiệm ta cũng thu được một số kết quảđược tổng kết như sau:
Đưa ra tình hình thương mại điện tử trên thế giới nói chung và Việt Nam nói riêng.
Giới thiệu các nền tảng cơng nghệ hỗ trợ thực thi tác vụ tự động cụ thể là AutoIT hỗ trợ tự động hóa các thao tác GUI và thao tác người dùng còn Selenium và một số API WebDriver để tương tác với web
Giới thiệu chi tiết về yêu cầu bài toán, hướng giải quyết bài tốn, mơ hình triển khai và các kết quả thử nghiệm đạt được.
Tuy nhiên, do thời gian có hạn cộng thêm khối lượng cơng việc lớn nên vẫn còn một số vấn đề và ý tưởng mà luận văn chưa thực hiện được. Nhằm cải thiện khả năng hoạt động của chương trình tới đây tác giả sẽ xây dựng thêm một số chức năng:
Xây dựng trang quản trị cho người quản trị hệ thống.
Mở rộng bộ các hành động mẫu, hỗ trợ người dùng không chỉ đăng sản phẩm mà cịn có thể cập nhật thơng tin, xóa sản phẩm hoặc quảng bá sản phẩm.
TÀI LIỆU THAM KHẢO Tiếng Anh
[1] “Electronic commerce”. WTO. [Online]. Available:
https://www.wto.org/english/thewto_e/whatis_e/tif_e/bey4_e.htm
[2] “Glossary:E-commerce”. Euro Commission.[Online]. Available:
https://ec.europa.eu/eurostat/statistics-explained/index.php/Glossary:E- commerce
[3] “Statista” [Online]. Available:
https://www.statista.com/statistics/379046/worldwide-retail-e-commerce- sales/
[5] Forbes, “Jeff-bezos” [Online]. Available:
https://www.forbes.com/profile/jeff-bezos/#5bec40fa1b23.
[8] “Chinanationalnews” [Online]. Available:
https://www.chinanationalnews.com/news/225297085/ipo-launch-of- alibaba-pushed-back-by-a-week
[13] “AutoIT Script” [Online]. Available:
https://www.autoitscript.com/autoit3/docs/introduction.htm
[14] “Selenium Dev” [Online]. Available:
https://www.selenium.dev/documentation/en/introduction/the_selenium_ project_and_tools/
Tiếng Việt
[4] Báo điện tử VTV News (2018), “Sau Apple, Amazon trở thành công ty 1.000 tỷ USD”
https://vtv.vn/cong-nghe/sau-apple-amazon-tro-thanh-cong-ty-1000-ty-usd- 20180905065615627.htm
[6] vnexpress.net, (2019) "Những tỷ phú giàu nhất Trung Quốc"
https://vnexpress.net/kinh-doanh/nhung-ty-phu-giau-nhat-trung-quoc- 3995408.html
[7] cafef, (2016) "5 điều cần biết vềvũ khí giúp Jack Ma trởthành người giàu nhất châu Á"
http://cafef.vn/5-dieu-can-biet-ve-vu-khi-giup-jack-ma-tro-thanh-nguoi- giau-nhat-chau-a-20160428095802384.chn
[9] Đầu tư chứng khoán, (2016) “Bài học cho startup Việt nhìn từ startup lớn nhất Đơng Nam Á” https://tinnhanhchungkhoan.vn/quoc-te/bai-hoc-cho-startup-viet-nhin-tu- startup-lon-nhat-dong-nam-a-163464.html [10] https://news.zing.vn/shopee-sap-thu-phi-nguoi-ban-dan-buon-hang-online- than-phien-post928967.html [11] https://news.zing.vn/ra-mat-tikinow-nhan-hang-trong-2-tieng-tiki-dang-co- chien-luoc-gi-post783474.html [12] http://vneconomy.vn/alibaba-rot-them-2-ty-usd-vao-lazada- 20180319130347365.htm