Chào bạn, nếu bạn là thành viên xin đăng nhập (Quên mật khẩu?) nếu chưa bạn có thể đăng ký tài khoản mới.
Thông báo: Thành viên muốn đăng nhập ở trang chủ, vui lòng vào Diễn đàn đăng nhập, sau đó quay lại trang chủ.


Bài viết mới nhất

Tìm kiếm [Nâng cao]

Lọc dữ liệu an toàn

Người gửi: lyhuuloi

05/07/2005, 08:08 am
Nếu bạn đang làm một site tin tức, hay một thể loại site nào đó cho phép thành viên gửi bài viết thì việc lọc dữ liệu ở nội dung bài viết của thành viên là không thể thiếu. Trong bài viết này tôi sẽ trình bày cách thức để lọc dữ liệu an toàn, áp dụng phương pháp của tôi bảo đảm không gây thiệt hại hay thay đổi nội dung đưa vào của thành viên cũng như vô hiệu hóa các đoạn mã nguy hiểm và biến nó thành không nguy hiểm. (laugh loudly)

Ở PHP có một hàm rất hay đó là str_replace(), tuy nhiên bạn đừng mong đợi gì ở hàm này vì nó chỉ đơn thuần là một hàm để thay thế chuỗi ký tự này thành chuỗi ký tự khác mà thôi! Và tôi sẽ sử dụng hàm này trong suốt quá trình lọc dữ liệu.

Bạn tạo file filter.php với code như sau:

<?php

class filter {

function safe_filter( $text )
{

$text = str_replace( "&", "&amp;", $text ); // Ampersand
$text = str_replace( "(", "&#40;", $text );
$text = str_replace( ")", "&#41;", $text );
$text = str_replace( "$", "&#036;", $text );
$text = str_replace( "!", "&#33;", $text );
$text = str_replace( "'", "&#39;", $text );
$text = str_replace( "`", "&#96;", $text );
$text = str_replace( """, "&quot;", $text );
$text = str_replace( "<", "&lt;", $text );
$text = str_replace( ">", "&gt;", $text );

return $text;
}

}

?>


Ví dụ về cách dùng: (Tạo file index.php)

<?php

require_once("filter.php");
$func = new filter;

$text = "&amp; ! $ < >";
$func->safe_filter( $text );

?>


Trong ví dụ trên Kết quả trả về vẫn là "&amp; ! $ < >" nhưng bạn thử xem code html của trang index.php này sẽ thấy hiệu quả của nó.

Ưu điểm của bộ lọc này là không làm thay đổi về bề mặt hình thức nhưng thay đổi về nội dung (html code) và nhược điểm duy nhất của nó là bạn không thể gõ tiếng việt mã 42 trong vietkey bởi vì sao thì bạn có thể quay lại đoạn code của file filter.php nơi có chú thích là ampersand (có nghĩa là "và")

lyhuuloi
(Cung cấp bởi sanchoituoitre.vn)

Bài phản hồi

 Thống kê chung
Đang trực tuyến
111 khách, 1 thành viên.
Thông số
Tổng số bài viết đã đăng: 57,953
Tổng số thành viên: 109155
Thành viên mới nhất: Anh Tú
Kỷ lục số người trực tuyến: 521   [ 09/04/2008, 02:18 am ]
[Thời gian tải trang này là 0.672 giây] - [25 truy vấn] - [GZIP bật]