Bài giảng Thiết kế và lập trình Web - Bài: 10 PHP bảo mật

Thiết kế và lập trình Web  
Bꢀi 10  
PHP bảo mật  
Viện CNTT & TT  
Thiết kế và lập trình Web  
Các Dạng Tấn Công  
. DoS, DDoS  
Thiết kế và lập trình Web  
Các Dạng Tấn Công  
. Virus hacking  
– Virus là chương trình (hay một đoạnh mã) có thể tự nhân  
bản và gây rắc rối cho máy tính hay hệ điều hành  
. Worms  
. Applet lừa đảo (Rogue Applets)  
. Đánh cắp thông tin thẻ tín dụng  
. Đánh cắp thông tin cá nhân  
. Ăn cắp thông tin  
Thiết kế và lập trình Web  
Các Nguy Cơ  
Một số nguy cơ đe dọa ứng dụng Web:  
. Hidden Manipulation  
. Parameter Tampering (giả mạo tham số)  
. Buffer Overflow (tràn bộ đệm)  
. Cookie Poisoning  
. SQL Injection  
. …  
Thiết kế và lập trình Web  
Các Nguy Cơ  
Hidden manipulation  
. Mô tả: thay đổi các trường ẩn (hidden fields) của trang  
web  
. Ví dụ:  
– <input name=“price” value=“99.00”>  
– Sửa valuethành 9.9  
. Giải pháp: mã hóa  
Thiết kế và lập trình Web  
Các Nguy Cơ  
Parameter Tampering (giả mạo tham số)  
. Mô tả: giả mạo hoặc thay đổi một số tham số trên  
URL hay web form  
. Ví dụ:  
ProductID=15704&price=59.99  
– Sửa pricethành 5.99  
. Giải pháp: mã hóa, dùng HTTP Secure (https), kiểm  
tra các tham số  
Thiết kế và lập trình Web  
Các Nguy Cơ  
Cross-site Scripting (CSS)  
– Mô tả: Chèn script độc vào trang web động  
– Ví dụ:  
• http://www.example.com/search.pl?text=<script>  
alert(document.cookie)</script>  
– Giải Pháp:  
• Lọc các ký tự đặc biệt (special characters)  
• Mã hóa  
Thiết kế và lập trình Web  
Các Nguy Cơ  
Cookie Poisoning  
. Mô tả: thay đổi các tham số, giá trị, … lưu trong cookie  
. Ví dụ:  
– Cookie gốc: SessionID=123456 ; Admin=no  
– Cookie bị thay đổi: SessionID=123456 ; Admin=yes  
. Giải pháp:  
– Mã hóa, xác thực, dùng HTTPS  
– Thêm IP của user  
– Thêm số ngẫu nhiên  
– …  
Thiết kế và lập trình Web  
Các Nguy Cơ  
SQL Injection  
. Mô tả: chèn code SQL vào trong câu lệnh SQL, thường  
xảy ra ở nơi vốn chỉ dành để điền giá trị của các  
parameter  
. Ví dụ  
– SELECT * FROM tbSales WHERE id = ‘@id’  
– Chèn đoạn code SQL vào tham số @id:  
100’; DELETE FROM tbOrders WHERE id = ‘1520  
. Giải pháp: dùng stored procedure thay cho câu truy vấn  
trực tiếp, lọc các ký tự đặc biệt, …  
Thiết kế và lập trình Web  
Một Số Lời Khuyên  
. Luôn cập nhật kiến thức về virus và các nguy cơ  
. Cập nhật thông tin về ngôn ngữ dùng để viết chương  
trình  
. Thiết kế các biện pháp bảo mật ngay từ đầu  
. Kiểm thử code kỹ lưỡng  
. Thường xuyên kiểm tra trang web với những kỹ thuật  
hacking mới  
. Dùng code-review để kiểm tra backdor do các lập trình  
viên cố ý chèn vào  
. …  
Thiết kế và lập trình Web  
An toàn PHP  
. An toàn khi cài đặt PHP như là CGI  
– Truy xuất file hệ thống  
– Truy xuất các website khác cùng server  
. Hạn chế bằng option doc_rootvà  
user_dirtrong file php.ini  
11  
Thiết kế và lập trình Web  
An toàn PHP  
. Cấu hình PHP: đặt trong file php.ini  
. display_errors = false  
Tắt việc hiển thị thông báo lỗi của script  
. open_basedir  
Giới hạn các thư mục được phép mở file  
. register_globals = off  
Tắt việc tự động khai báo biến toàn cục  
. disable_functions =  
"exec,passthru,system,shell_exec,popen“  
Tắt một số hàm nhạy cảm  
. allow_url_fopen = off  
12  
Tắt việc mở file từ một URL  
Thiết kế và lập trình Web  
An toàn PHP  
. Safe mode: thiết lập trong php.ini  
. safe_mode = on / off  
Bật/Tắt chế độ safemode  
. safe_mode_gid  
Yêu cầu userid của script PHP giống gid  
hay uid của file khi open hay không?  
. safe_mode_exec_dir  
Cho phép thực hiện script PHP trong những  
thư mục nào  
13  
Thiết kế và lập trình Web  
An toàn MySQL  
. Thiết lập file cấu hình của MySQL có chủ quyền là  
root  
. Thiết lập password riêng cho root và cấp các user  
khác cho việc truy xuất MySQL với các quyền có  
giới hạn  
. Xóa database test  
. Cấm sử dụng remote access  
14  
Thiết kế và lập trình Web  
Mã hóa  
. Mã hóa một chiều: md5, sha1  
. Mã hóa đối xứng: sử dụng 1 khóa để mã hóa và  
giải mã: IDEA, SAFER  
. Mã hóa bất đối xứng: sử dụng 1 khóa (khóa công  
khai) để mã hóa và dùng 1 khóa khác (khóa bí mật)  
để giải mã: RSA  
15  
Thiết kế và lập trình Web  
Lập trình thế nào để an toàn  
.
Lỗ hổng của register_globals  
<?php  
if (isset($user) && $user == "admin" && $pass == "abcd")  
$loggedin = 1;  
if ($loggedin){  
include("secretpage.html");  
exit;  
}
?>  
<form method="get" action="<?php echo($PHP_SELF) ?>">  
<input type="test" name="user">  
<input type="password" name="pass">  
<input type="submit" value="Login">  
</form>  
.
.
Login bình thường  
16  
Thiết kế và lập trình Web  
Lập trình thế nào để an toàn  
.
Kiểm tra dữ liệu input  
<?php  
if (isset($user) && $user == "admin" && $pass == "abcd")  
$loggedin = 1;  
if ($loggedin){  
include("secretpage.html");  
exit;  
}
?>  
<form method="get" action="<?php echo($PHP_SELF) ?>">  
<input type="test" name="user">  
<input type="password" name="pass">  
<input type="submit" value="Login">  
</form>  
.
.
Login bình thường  
Sử dụng pass là chuỗi "1 || 1 || 1"  
17  
Thiết kế và lập trình Web  
Lập trình thế nào để an toàn  
.
Lỗ hổng cross-site  
<?php  
if ($_GET['name'])  
echo("Hello " . $_GET['name']);  
?>  
.
Sử dụng bình thường  
.
Sử dụng URL  
<?php  
if ($_GET['name'])  
echo("Hello " . htmlspecialchars($_GET['name']));  
?>  
18  
Thiết kế và lập trình Web  
Lập trình thế nào để an toàn  
.
Lỗ hổng include  
<?php  
include($_GET['page']);  
?>  
.
Sử dụng bình thường test.php?page=main.html  
.
Sử dụng URL  
.
Thiết lập allow_url_fopen = off  
<?php  
$listpage = array(1=>'main.html');  
include $listpage[intval($_GET[‘page'])];  
?>  
19  
Thiết kế và lập trình Web  
Đếm thời gian thực hiện  
. Hàm time() tính số giây từ năm 1970: không  
hữu ích vì một đoạn code có thời gian thực  
hiện nhỏ hơn 1 giây  
. Hàm microtime() trả về chuỗi "msec sec" là  
miligiây và giây tính từ 1970  
. Đổi thời gian thành số thực để tính toán  
<?php  
$tp = explode(' ', microtime());  
$actualtime = $tp[1] . substr($tp[0], 1);  
echo($actualtime);  
20  
?>  
Tải về để xem bản đầy đủ
pdf 30 trang yennguyen 16520 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Thiết kế và lập trình Web - Bài: 10 PHP bảo mật", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_thiet_ke_va_lap_trinh_web_bai_10_php_bao_mat.pdf