AdminTalk - Talk to Learn

Navigation
Go Back   AdminTalk - Talk to Learn > Premium Server, Hosting Support > Security
Security Nơi giao lưu, hỏi đáp, thảo luận, chia sẻ kiến thức, kinh nghiệm hay về bảo mật, phần mềm quản lý máy chủ (hosting) (CPanel, Plesk, ...), VPS, ...

Đề mục chính

Cấu trúc diễn đàn
Thông tin tổng hợp
Thông báo và quy định chung
Đóng góp ý kiến
Những bài viết có giá trị
Tin tức công nghệ
•• Tin tức công nghệ thông tin
•• Doanh Nghiệp & Người Tiêu Dùng
Premium Server, Hosting Support
Web Hosting / Domain
•• Kiến thức cơ bản về Web Hosting/Domain
•• Plesk - CPanel
Server / VPS
•• Kiến thức cơ bản Server - VPS
•• Server Review/ Hardware
•• Mail Server - AntiSPAM
Virtuozzo - VMWare - HyperV
•• For Windows
•• For Linux
Security
•• Mạng Wan - Lan
•• Internet - Virus - Hacker
VoIP
•• Kiến Thức Cơ Bản VoIP
•• Phần Cứng VoIP
•• Phần Mềm VoIP
•• Nhà cung cấp VoIP
Server Operating System
Linux Server
Windows Server 200x
Computer Supports and Discussion
Operating System
•• Hệ điều hành Linux
•• Hệ điều hành Windows
•• Hệ điều hành Mac
•• Hệ điều hành Chrome
Laptop, Netbook
Hardware
•• Cpu Intel
•• Cpu AMD
•• PSU, Overclocking & Cooling
•• Mainboard & Memory
•• Đồ họa máy tính
•• Kinh nghiệm
Software
•• Linux Apps
•• Windows Apps
Webmaster Area
Webmaster talk
Programming Language
•• HTML & CSS
•• PHP
•• C++ / C#
•• .NET
•• Java
•• Other
Graphic & Mutimedia
SEO (Search Engine Optimization)
Browsers
•• Mozilla Firefox
•• Chrome
•• Internet Explorer
Thủ Thuật Internet
Thương mại điện tử
•• Hình thức thanh toán
•• Giải pháp
HiTech, Mobile, Movies, Music, eBooks, Relax
Tablet PC
•• iPad
Mobile
•• iPhone
•• BlackBerry
•• Others
Movies
•• Download phim HD
•• Download phim DVD
Music
•• Download nhạc Lossless Album
•• Download nhạc Lossless tuyển chọn
eBooks - Tài liệu
•• Tin học - Lập trình
•• Khoa học - Kỹ thuật
•• Ngoại Ngữ
•• Tutorials - Training
•• Kinh tế
•• Thể Loại Khác
Bài học trong cuộc sống
AdminTalk – Talk to You
Introduce Youself
Off topic/ Chatting
Mua bán - Rao vặt - Tuyển dụng
Quảng cáo
Tuyển dụng

Bầu chọn mới nhất
Bạn nghĩ sao về công nghệ USB 3.0 ?

Rất tuyệt! Sẽ sử dụng ngay nếu được bán trên thị trường: 47.37%

Tốt hơn USB 2.0 , nhưng giá có thể mắc hơn nhiều: 42.11%

Bình thường thôi, công nghệ luôn thay đổi mà: 10.53%

Không quan tâm lắm: 0%
Voters: 38. You may not vote on this poll

Thống kê
Đề tài: 10635
Bài gửi: 12199
Thành viên: 20,207
Thành viên tích cực: 82
Xin cùng nhau chào đón thành viên mới nhất: buixuantu
Kỷ lục: 624 người đã ghé thăm 17/11/2010 lúc 06:16 AM.
Thành viên mới:
hôm nay
- buixuantu
hôm nay
- baophuc0711
Hôm qua
- ddvtien
Hôm qua
- thanhtam1028
Hôm qua
- goodhealthvn1
Hôm qua
- honghobao286
07/02/2012
- condau
07/02/2012
- timlaibautroi7408
07/02/2012
- NguyenLien
07/02/2012
- quydona

Số người đang xem
View Who's Online Thành viên: 3
Khách: 159
Tổng: 162
Nhóm: 0
Nhóm:  
Thành viên:  aviomobile, aviovn8, lovexinh99
Mở Sổ Bạn Bè

Trả lời
 
LinkBack Ðiều Chỉnh Kiếm Trong Bài Ðiểm: Thread Rating: 1 votes, 5.00 average. Xếp Bài

  #1 (permalink)
Old 29/05/2009, 02:31 PM
Post Bảo mật cho việc sử dụng PHP Upload Script

emailhoc
Admintalk's SMod
love talking
 
Tham gia ngày: Dec 2008
Bài gởi: 160
Thanks: 0
Thanked 3 Times in 3 Posts
VP: 1.00
Donate
Hầu hết các PHP scripts và hệ thống quản lý nội dung (CMS scripts) đề yêu cầu quyền ghi 777 (rwxrwzrwz) phải được set cho các thư mục cho phép upload hình ảnh và tập tin. Nhiều chuyên gia bảo mật cảnh báo rằng việc thiết lập quyền thành 777 đồng nghĩa với việc bất kỳ ai cũng có thể đăng tải bất kỳ nội dung gì lên máy chủ của bạn, cài đặt các mã độc, chạy các chương trình phá hoại và có thể chiếm đoạt quyền quản lý máy chủ. Đây thực sự là một hiểm họa lớn.

Có 2 cách khả dĩ có thể được áp dụng trong trường hợp này:

Cách 1: (thích hợp cho người dùng shared hosting)

1. Gán quyền 775 cho thư mục upload
2. Kiểm tra tập tin bằng cách sử dụng các hàm PHP (nếu upload hình ảnh)
3. Vô hiệu hóa directory indexes và script exection sử dụng .htaccess
4. Đặt thư mục upload ra ngoài thư mục gốc đặt website .

Upload Folder outside WWW Root

Cách đơn giản nhất để bảo vệ nội dung của bạn là di chuyển thư mục ra ngoài tập tin gốc đặt trang web. Nếu là Cpanel thì đó là public_html và trong Plesk là httpdocs. Bằng cách này nội dung của thư mục mà bạn cho phép quyền ghi (writable) sẽ không bị lộ ra bên ngoài.

Trong mã PHP script, bạn thiết lập để có thể truy cập vào thư mục nằm ngoài thư mục web gốc

Code:
./uploads

<img src="./uploads/photo.gif>
Cho đến lúc này, hacker vẫn có thể đăng tải và chạy các đoạn mã độc trên máy chủ của bạn do vậy bạn cần tạo một tập tin .htaccess vào trong thư mục upload để vô hiệu hóa việc thực thi CGI

Vô hiệu hóa việc thực thi các script và ẩn chỉ mục với .htaccess

Tạo tập tin .htaccess với nội dung như sau

Code:
Options -Indexes
Options -ExecCGI
AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi
Hơn thế nữa, nếu bạn chỉ cho phép người dùng làm việc với các tập tin hình ảnh, bạn có thể cấm các loại tập tin khác bằng cách thêm đoạn code dưới đây vào .htaccess.

Code:
<Files ^(*.jpeg|*.jpg|*.png|*.gif)>
order deny,allow
deny from all
</Files>
Sử dụng các hàm PHP để kiểm tra các tập tin đã được

Điều đầu tiên trong bảo mật tập tin được đăng tải là bạn kiểm tra kích thước và loại file. Do bởi bạn cho phép mọi người có thể upload nên họ có thể up cà VIRUS!

1. Kiểm tra loại tập tin upload và từ chối việc upload các loại file khác.
2. Cấm tập tin dựa trên dung lượng qui định.

Nếu bạn cho phép người dùng đăng tải tập tin hình ảnh (jpg,gif,png) thì mẹo ở đây là sử dụng hàm getimagesize() trong PHP. Nếu tập tin được upload là hình ảnh thì nó sẽ trả lại giá trị là "true" bằng ngược lại sẽ báo lỗi. Hàm getimagesize() còn trả lại thông tin width, height và type của tập tin. Vì vậy đừng quên kiểm tra chiều dài và rộng tập tin hình đã đăng tải nhằm ngăn chặn kích thước chỉ định.

Code:
<?php

// check for uploaded file size

if ($_FILES['imagefile']['size'] > 50000 )
{
die ("ERROR: Large File Size");

}

//check if its image file

if (!getimagesize($_FILES['imagefile']['tmp_name']))
{ echo "Invalid Image File...";
exit();
}

// restrict width and height if its image or photo file

list($width, $height, $type, $attr) = getimagesize($_FILES['imagefile']['tmp_name']);

if ($width > 100 || $height > 100)
{
echo "Maximum width and height exceeded. Please upload images below 100x100 px size";
exit();
}

$blacklist = array(".php", ".phtml", ".php3", ".php4", ".js", ".shtml", ".pl" ,".py");
foreach ($blacklist as $file)
{
if(preg_match("/$file\$/i", $_FILES['userfile']['name']))
{
echo "ERROR: Uploading executable files Not Allowed\n";
exit;
}
}

?>
Nếu bạn cần từ chối yêu cầu upload từ các tập tin, bạn có thể tạo 1 danh sách blacklist về các tập tin ở dạng array và chạy lặp để kiểm tra phần header. Nhớ rằng đừng tin tưởng vào phần header của trình duyệt vì chúng có thể bị giả mạo.

Ghi chú: Để tham khảo thêm về hàm getimagesize() và kiểm tra danh sách blacklist bạn có thể tải tài liệu này. Link: [Chỉ có thành viên mới thấy links này. ]

Nhớ rằng một khi bạn đã di chuyển thư mục upload ra khỏi thư mục gốc, cách tốt nhất để xuất các tập tin (ở đây giả định là hình ành) thì cách tốt nhất là viết một đoạn mã PHP script (gọi nó là getimage.php), đọc tập tin và gửi phần header ra cho trình duyệt. Xem ví dụ dưới đây.



Code:
// this is just example only

$imgfile = $rsPhoto['photo']; // or value from database

list($width, $height, $type, $attr) = getimagesize($imgfile);

switch ($type)
{

case 1: $im = imagecreatefromgif($imgfile);
header("Content-type: image/gif");
break;

case 2:
$im = imagecreatefromjpeg($imgfile);
header("Content-type: image/jpeg");
break;

case 3:
$im = imagecreatefrompng($imgfile);
header("Content-type: image/png");
break;

}


Bài viết cùng chủ đề:
emailhoc vẫn chưa có mặt trong diễn đàn  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Trả Lời Với Trích Dẫn
  #2 (permalink)
Old 30/05/2009, 11:23 AM
Smile

emailhoc
Admintalk's SMod
love talking
 
Tham gia ngày: Dec 2008
Bài gởi: 160
Thanks: 0
Thanked 3 Times in 3 Posts
VP: 1.00
Donate
Cách 2:

Cách tốt nhất là nên quản lý bảo mật cho việc upload tập tin hơn là cho người dùng quyền được phép ghi. Thay vào đó ta sẽ trao quyền ghi cho tài khoản apache. Chỉ việc chuyển quyền sở hữu thư mục cho tài khoản apache hoặc nobody và gán quyền 770 cho thư mục.

Bằng cách này, người ngoài sẽ không thể truy cập vào để đọc / ghi / thực thi trên thư mục upload. Lúc này chỉ có tài khoản apache là có quyền rwx và cũng chính apache là tài khoản sở hữu thư mục upload. Bạn có thể đặt thư mục upload vào trong thư mục web gốc.

Code:
chown -R apache uploads
chmod -R 770 uploads
Nếu có ai đó cố gắng truy cập vào thư mục uploads thông qua địa chỉ URL sẽ xuất hiện thông báo Forbidden.


Theo mysql-apache-php


emailhoc vẫn chưa có mặt trong diễn đàn  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Trả Lời Với Trích Dẫn
Trả lời

Bookmarks

Tags
bảo, cho, dụng, mật, php, sử, script, upload, việc


Ðang đọc: 1 (0 thành viên và 1 khách)
 
Ðiều Chỉnh Kiếm Trong Bài
Kiếm Trong Bài:

Kiếm Chi Tiết
Xếp Bài Cho Ðiểm Chủ Ðề Này
Cho Ðiểm Chủ Ðề Này:

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may post replies
You may post attachments
You may edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt
Trackbacks are Mở
Pingbacks are Mở
Refbacks are Mở

Chuyển đến



Múi giờ GMT. Hiện tại là 08:54 PM.
Powered by: vBulletin - Copyright © 2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
www.AdminTalk.vn
Powered by vBCMS® 1.2.5 ©2002 - 2012 VinaCIS® Corporation