Tải bản đầy đủ (.docx) (12 trang)

PHÁT TRIỂN ỨNG DỤNG WEB : MÃ HÓA VÀ GIẢI MÃ TRANG PHP

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (375.18 KB, 12 trang )

PHÁT TRIỂN ỨNG DỤNG WEB
TÊN ĐỀ TÀI : MÃ HÓA VÀ GIẢI MÃ TRANG PHP

MỤC LỤC

1


I.

SƠ LƯỢC VỀ PHP VÀ MÃ HÓA TRONG PHP

1. Sơ lược về PHP
PHP được xem là ngôn ngữ kịch bản phía máy chủ phổ biến nhất trên thế
giới, nó đã phát triển rất nhiều kể từ khi các đoạn code inline đầu tiên xuất hiện
trong các tập tin HTML tĩnh.
PHP khởi đầu như là một dự án mã nguồn mở nhỏ, nhưng theo đà phát
triển, ngày càng nhiều người thấy rằng nó càng ngày càng hữu ích. PHP được phát
triển từ một sản phẩm có tên là PHP/FI. PHP/FI do Rasmus Lerdorf tạo ra năm
1994, ban đầu được xem như là một tập con đơn giản của các mã kịch bản Perl để
theo dõi tình hình truy cập đến bản sơ yếu lý lịch của ông trên mạng. Ông đã đặt tên
cho bộ mã kịch bản này là “Personal Home Page Tools”. Khi cần đến các chức năng
rộng hơn, Rasmus đã viết ra một bộ thực thi bằng C lớn hơn để có thể truy vấn tới
Database và giúp cho người sử dụng phát triển các ứng dụng web đơn giản.
Rasmus đã quyết định công bố mã nguồn của PHP/FI cho mọi người xem, sử dụng
cũng như sửa các lỗi có trong nó, đồng thời cải tiến mã nguồn.
• PHP viết hồi qui của “PHP: Hypertext Preprocessor”.
• PHP là ngôn ngữ lập trình kịch bản viết cho máy chủ mà được nhúng
trong HTML. Nó được sử dụng để quản lý nội dụng động, Database,
Session tracking, …
• Nó được tích hợp với một số Database thông dụng như MySQL,


PostgreSQL, Oracle, Sybase, Informix, và Microsoft SQL Server.
• PHP thực thi rất tuyệt vời, đặc biệt khi được biên dịch như là một
Apache Module trên Unix side. MySQL Server, khi được khởi động,
thực thi các truy vấn phức tạp với các tập hợp kết quả khổng lồ trong
thời gian Record-setting.
• PHP hỗ trợ một số lượng rộng rãi các giao thức lớn như POP3, IMAP,
và LDAP. PHP4 bổ sung sự hỗ trợ cho Java và các cấu trúc đối tượng
phân phối (COM và CORBA)
• Cú pháp PHP là giống C.

2


2. Khái niệm về mã hóa và giải mã
2.1 Khái niệm về mã hóa (encode)

Trong mật mã học, một ngành toán học ứng dụng cho công nghệ thông
tin, mã hóa là phương pháp để biến thông tin (phim ảnh, văn bản, hình ảnh...) từ
định dạng bình thường sang dạng thông tin không thể hiểu được nếu không có
phương tiện giải mã.
Từ thời xa xưa, mã hóa được sử dụng nhiều trong các thư từ, điện tín, đặc
biệt được ưa chuộng khi có chiến tranh xảy ra, đóng góp quan trọng vào việc đảm
bảo an toàn thông tin.
Ngày nay, thời đại mà internet phát triển một cách nhanh chóng, khi mà nhà
nhà người người đều sử dụng internet và chia sẻ những thông tin cá nhân của
mình trên đó. Việc bảo mật những thông tin này là thực sự cần thiết, và một trong
những cách để bảo mật thông tin hữu hiệu nhất hiện nay là mã hóa.
2.2 Khái niệm về giải mã (decode)

Giải mã là phương pháp để đưa từ dạng thông tin đã được mã hóa về dạng

thông tin ban đầu, quá trình ngược của mã hóa.

3


II.

CÁC KIỂU MÃ HÓA TRONG PHP VÀ CÁCH GIẢI MÃ

1. Mã hóa Encode / Decode
1.1 Giới thiệu
Trường hợp cần viết một chuỗi unicode được mã hóa mà không được sử
dụng trực tiếp ký tự unicode vào code. Cách này đặc biệt hữu dụng trong việc sửa
đổi bytecode của java để hiển thị tiếng việt.
1.2 Ví dụ
Sử dụng hàm json_encode sẽ giúp bạn tìm ra chuỗi mã hóa unicode.
header('content-type:application/json');
#or text/plain
echo
json_encode(array('fullname'=>'hoang','address'=>'An
Giang','LoanType'=>'Vay theo lương'));
Kết quả ra chuỗi json thế này chứa các kỹ tự unicode mã hóa giống như thế này.
[{"fullname":"hoang","address":"An
Giang","loanType":"Vay
theo
l\u01b0\u01a1ng"}]

Để hiển thị chuỗi giải mã đọc được từ ký tự unicode mã hóa bởi json_encode, chúng
ta gọi hàm json_decode.
print_r(json_decode('["Vay theo l\u01b0\u01a1ng"]'));


Kết quả chuyển thành mảng có chứa ký tự đã giải mã:
Array ( [0] => Vay theo lương )

1.3 Cách giải mã

• Nếu mã hóa có dạng eval(base64_decode
php $o="encrypted text";eval(base64_decode('rubbish'));return;
Để giải mã đoạn code bị mã họa dạng này, chỉ cần copy đoạn “‘encrypted text” vào
khung

nhấn
nút
Decode
this
Mess

được.
Trang web với công cụ giải mã: />4


• Nếu mã hóa có dạng eval(gzinflate(base64_decode(‘encrypted text’)));
eval(gzinflate(base64_decode('80jNyclXyFTPVUhJTc5PSU0BAA==')));

Để giải mã đoạn code bị mã hóa dạng này, bạn chỉ cần copy đoạn:
“80jNyclXyFTPVUhJTc5PSU0BAA==” vào khung và nhấn decode là được.
Công cụ giải mã: />•

Mã hóa dạng Rubbish


php
$_F=__FILE__;$_X='encrypted
text';eval(base64_decode('rubbish'));
Để giải mã, bạn copy đoạn “encrypted text” vào khung và nhấn Decode this Rubbish.
Công cụ giải mã: />Một số kiểu encoding có thể sử dụng
MD5 converter


SHA1 converter
Chatset converter / iconv
Base64 encode
Base64 decode
UTF8 encode
UTF8 decode
Raw url encode
Raw url decode
HTML entities encode
HTML entities decode
Unix Time to Human Date
Human Date to Unix Time Stamp
Remove duplicate lines
Sort text lines
Pirate Text
Backwards – Mirrored Text

5


Ngoài ra có thể tìm hiểu thêm. Sử dụng công cụ chuyển đổi
encoding/decoding chuỗi online:

.

1.4 Mã hóa đối tượng
Nhiều lúc việc mã hóa mảng thành chuỗi json không tiện cho lắm, dễ bị
người khác đọc dữ liệu vì tính bảo mật. Có một cách khác giúp bạn mã hóa mọi đối
tượng thành kiểu chuỗi, và Wordpress cũng đã sử dụng cách mã hóa các đối tượng
của nó với kiểu này.
Bằng cách sử dụng hàm serialize() để mã hóa đối tượng và hàm
ngược unserialize() sẽ biến nội dung kiểu chuỗi được mã hóa bởi serialize() thành
chính object trước đó.
$data = array('name'=>"Hoang", "old"=>24);
var_dump($data);
/* array
'name' => string 'Hoang' (length=5)
'old' => int 24
*/
// Serialize array $data
$text_serialize = serialize($data);
var_dump($text_serialize);
/* string 'a:2:{s:4:"name";s:3:"Hoang";s:3:"old";i:24;}' (length=44) */
// Unserialize array $data
$data_unserialize = unserialize($text_serialize);
var_dump($data_unserialize);
/* array
'name' => string 'Hoang' (length=5)
'old' => int 24
*/
?>


6


Kết quả:
a:2:{s:4:"name";s:3:"Hoang";s:3:"old";i:24;}

Rất tiện cho lưu các đối tượng PHP vào Database.
Lưu ý: Ta có thể sử dụng serialize() và unserialize() cho mọi đối tượng PHP:
object, array, base object,…
Trong Wordpress có viết hàm giúp bạn kiểm tra một chuỗi được tạo bởi
serialize từ một đối tượng, trước khi sử dụng hàm giải mã đối tượng unserialize
bạn nên kiểm tra có hợp lệ không với hàm is_serialized của wordpress. Hàm này
trích dẫn có sẵn trong wordpress .
//I didn't write this code, it's from WordPress actually
function is_serialized( $data ) {
// if it isn't a string, it isn't serialized
if ( !is_string( $data ) )
return false;
$data = trim( $data );
if ( 'N;' == $data )
return true;
if ( !preg_match( '/^([adObis]):/', $data, $badions ) )
return false;
switch ( $badions[1] ) {
case 'a' :
case 'O' :
case 's' :
if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) )
return true;

break;
case 'b' :
case 'i' :
case 'd' :
if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) )
return true;
break;
}
return false;
}
?>

7


III.
-

DEMO MÃ HÓA FILE PHP BẰNG ZEND GUARD
Bước 1 :
Tải
chương
trình
tại trang
web
/>Đồng thời hãy tiến hành cài đặt và khởi động chương trình

-

:


Bước 2 : Tạo 1 Project bằng cách : File >>> New >>> Zend Guard Project.

8


-

9

Bước 3 : Chọn
source nguồn cần
mã hóa, ví dụ bằng
file config.php vì
file này chứa các
khai báo database
quan trọng của
website/forum
>>> Next.


-

Bước 4 : Lựa chọn cấu hình cách thức mã hóa cho phiên bản PHP phù hợp
với nhu cầu sử dụng.

-

Bước 5 : Nhấn nút Encode project như hình để bắt đầu tiến trình mã hóa:


-

Kết quả : Sau khi Encode thành công, chương trình sẽ tạo ra file có nội dung
mã hóa tại Output Location: D:\Temp\Zend mà chúng ta đã khai báo trong
thông tin Project.

10


IV.

KẾT LUẬN

-

Càng ngày càng có rất nhiều loại lỗ hổng bảo mật mạng được tìm ra.

-

Nhớ các tools và công cụ, chúng ta đã tìm ra những phương pháp tấn công
lỗ hổng đề từ đó tìm các biện pháp khắc phục cho hệ thống mạng Lan của
mình. Việc vận dụng các công cụ có sẵn này bất kỳ người nào cũng có thể tự
tìm tòi và khám phá ra được, tuy nhiên hãy sử dụng nó vào mục đích tốt,
không nên sử dụngvào mục đích xấu và lạm dụng đời sống riêng tư cá nhân.

-

Trong đề tài này, mình đã thu thập được các thông tin trên các diễn đàn và
một số hiểu biết cá nhân. Phần cài đặt chạy trực tiếp trên máy và đã thử
nghiệm thành công.


-

Tuy nhiên, trong quá trình biên soạn, có thể kiến thức còn chưa chuyên sâu
và một số thông tin thu thập trên mạng nên việc tìm hiểu còn nhiều thiếu sót,
kính mong Quý Thầy Cô và các bạn thông cảm.

V.

11


TÀI LIỆU THAM KHẢO
Tiếng Việt :
1. Hưng Phú, “Hướng dẫn mã hóa code HTML và PHP”

Link :

/>2. Mr.Toan, “Tổng hợp các trang mã hóa – giải mã code php”

Link :

/>Tiếng Anh :
Convert character encoding – PHP
Link :
/>
12




×