Pham_loi
Chức vụ: 21:18:45, 30-03-2016 |
Đêm khuya buồn buồn ngồi viết cái class này cho AE nào muốn fix các lỗi căn bản như:
- XSS (Cross-Site Scripting)
- SQLI (Sql injection)
Source Code:
<?php
/**
* Author: Killer
**/
class K_Security {
/**
* Loại bỏ ký tự đặc biệt của ID
* Fix bug sql injection
* @param integer $Numeric
* @return integer
*/
public function removeSQLI($Numeric){
$strNumeric = preg_replace('/\D/', '', $Numeric);
if($strNumeric != 0){
return $strNumeric;
}else{
return false;
}
}
/**
* Loại bỏ thẻ html
* Fix bug XSS
* @param string $Numeric
* @return string
*/
public function cleanXSS($string){
if(get_magic_quotes_gpc()){
$string = stripslashes($string);
}
$string = mysql_real_escape_string($string);
$string = strip_tags(str_replace(array("alert(\'","\');",), array('',''),$string));
return $string;
}
}
?>
Copy code
/**
* Author: Killer
**/
class K_Security {
/**
* Loại bỏ ký tự đặc biệt của ID
* Fix bug sql injection
* @param integer $Numeric
* @return integer
*/
public function removeSQLI($Numeric){
$strNumeric = preg_replace('/\D/', '', $Numeric);
if($strNumeric != 0){
return $strNumeric;
}else{
return false;
}
}
/**
* Loại bỏ thẻ html
* Fix bug XSS
* @param string $Numeric
* @return string
*/
public function cleanXSS($string){
if(get_magic_quotes_gpc()){
$string = stripslashes($string);
}
$string = mysql_real_escape_string($string);
$string = strip_tags(str_replace(array("alert(\'","\');",), array('',''),$string));
return $string;
}
}
?>
Copy code
Cách dùng:
1. Bạn có lấy thông tin của bài viết bằng cách áp dụng phương thức GET là truyền id của bài viết đó.
URL: http://domain/post.php?id=123
Vậy lỗi xuất hiện khi nào ?
Lỗi phát sinh khi có một ai đó sử dụng các ký tự đặc biệt như:
Thêm dấu ' vào url chẳng hạn.
Hay một số lệnh trong mysql.
....
Vậy cách khắc phục thế nào?
Bạn chỉ cần làm theo mẫu sau:
Code mẫu:
<?php
$ID = (int)$_GET['id';//Bắt tham số truyền vào và gán cho nó một biến
if(isset($ID)){//Xem biến này có tồn tại hay không
$security = new K_Security;//Gọi thư viện
if($security->removeSQLI($ID) != false){
echo $security->removeSQLI($ID);
}else{
echo "Khong co gia tri";
}
}
?>
Copy code
$ID = (int)$_GET['id';//Bắt tham số truyền vào và gán cho nó một biến
if(isset($ID)){//Xem biến này có tồn tại hay không
$security = new K_Security;//Gọi thư viện
if($security->removeSQLI($ID) != false){
echo $security->removeSQLI($ID);
}else{
echo "Khong co gia tri";
}
}
?>
Copy code
2. Bạn làm một cái khung tìm kiếm các từ khóa có trong bài viết.
Vậy lỗi là khi nào ?
Lỗi phát sinh khi ng dùng cố ý gõ vào đó những đoạn mã của HTML, và vô tinh khi bạn echo đoạn mã đó ra trình duyệt, trình duyệt sẽ nhận biết đó là một mã HTML dẫn đến kết quả là nó sẽ hiện thị như đó là một mã HTML lên trình duyệt.
Vậy cách khắc phục ?
Bạn chỉ cần làm theo mẫu sau:
Code mẫu:
<?php
//Chuỗi có chèn một số mã HTML.
$string = "<script type=\"text/javascript\">alert('You must be logged in to report a snippet.');</script><img alt=\"\" src=\"http://1.gravatar.com/avatar/ba23f37e405799b7b6055ef58f1f5721?s=100&d=&r=G\" class=\"avatar avatar-100 photo img-circle img-polaroid\" height=\"100\" width=\"100\"><a href=\"http://en.pdf24.org/fax-online.jsp\" title=\"Fax Online\" onclick=\"var pdf24Win = window.open('about:blank', 'pdf24PopWin', 'resizable=yes,scrollbars=yes,width=500,height=250,top=0,left=0'); pdf24Win.focus(); document.pdf24Form0.submit(); if(typeof pdf24OnCreatePDF === 'function'){void(pdf24OnCreatePDF(this,pdf24Win));} return false;\" class=\"btn btn-large btn-block btn-primary\">Tải bài viết dạng PDF</a>";
$security = new K_Security;//Gọi thư viện
echo $security->cleanXSS($string);// Xử lý
?>
Copy code
//Chuỗi có chèn một số mã HTML.
$string = "<script type=\"text/javascript\">alert('You must be logged in to report a snippet.');</script><img alt=\"\" src=\"http://1.gravatar.com/avatar/ba23f37e405799b7b6055ef58f1f5721?s=100&d=&r=G\" class=\"avatar avatar-100 photo img-circle img-polaroid\" height=\"100\" width=\"100\"><a href=\"http://en.pdf24.org/fax-online.jsp\" title=\"Fax Online\" onclick=\"var pdf24Win = window.open('about:blank', 'pdf24PopWin', 'resizable=yes,scrollbars=yes,width=500,height=250,top=0,left=0'); pdf24Win.focus(); document.pdf24Form0.submit(); if(typeof pdf24OnCreatePDF === 'function'){void(pdf24OnCreatePDF(this,pdf24Win));} return false;\" class=\"btn btn-large btn-block btn-primary\">Tải bài viết dạng PDF</a>";
$security = new K_Security;//Gọi thư viện
echo $security->cleanXSS($string);// Xử lý
?>
Copy code
Done nhé !
Cảm ơn các bạn đã xem bài viết
Nếu các bạn nào có cách khắc phục khác thì hãy public lên rồi chúng ta cùng nhau thảo luận nhé.
Nguồn: sinhvienit
Vui lòng Đăng Nhập để có thể tải file
SinhVienIT.Net---ksecurity.php
Thể loại: text/x-php
Dung lượng: 792B
Chỉnh sửa lúc 2016-03-30 21:20 bởi Pham_loi
: 0 ♥
Trực Tuyến:
Khách: 1