»-(¯`v´¯)-»Diễn Đàn Trường Công Nghệ Thông Tin Thái Nguyên»-(¯`v´¯)-»
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

»-(¯`v´¯)-»Diễn Đàn Trường Công Nghệ Thông Tin Thái Nguyên»-(¯`v´¯)-»

.:hix lâu không làm web.nên giờ lười làm quá.dùng tạm cái Forum việt vậy.chủ yếu là chất lượng Những bài viết thôi đúng không.thật THà là nói hết không giấu diếm nhưng học xong cấm nghịch bậy..http://guichonguoiay.net.tf web mình đó RỖI VÀO CHơi Ha.hjhj:.
 
Trang ChínhPortalGalleryTìm kiếmLatest imagesĐăng kýĐăng Nhập
Thông Tin Cực Sock Cho Những Ai Nghiện Game Audition Của Thái Nguyên.Sau Một Thời Gian Tìm Hiểu Mà Nhờ Mấy Anh Ở forum ClbGame Mình Đã Cài THành Công Bản Audition Offline THái Nguyên.Sắp Tới Mình Sẽ Đưa Lên Online.Các Bạn Muốn Chơi Game Và Muốn Sở Hữu Những Bộ Đồ Đẹp Nhất Không Còn Chần Chừ Gì Nữa Mà Không Click Chuột Để Truy Cập Trang Web wWw.AuTn.tk Để Download Và Thưởng thức
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Latest topics
Navigation
 Portal
 Diễn Đàn
 Thành viên
 Lý lịch
 Trợ giúp
 Tìm kiếm
Diễn Đàn
Affiliates
free forum

Diễn Đàn

 

 Anti PHP-SQL injection

Go down 
Tác giảThông điệp
Admin
Admin



Tổng số bài gửi : 136
Join date : 13/03/2010

Anti PHP-SQL injection Empty
Bài gửiTiêu đề: Anti PHP-SQL injection   Anti PHP-SQL injection Icon_minitimeTue Mar 16, 2010 9:49 pm

Anti PHP-SQL injection



Hầu hết các lỗi SQL Injection đều là do câu lệnh SQL sai hoặc do User làm cho câu lệnh SQL sai , không thực hiện đúng chức năng của nó


1.SQL Injection

- Hầu hết các lỗi SQL Injection đều là do câu lệnh SQL sai hoặc do User làm cho câu lệnh SQL sai , không thực hiện đúng chức năng của nó . Ví dụ như chúng ta có một Script kiểm tra đăng nhập như sau :

Mã lệnh (php)

PHP Code:

<?
//Các lệnh Connect vào SQL Database .v.v.
$username = $_POST['username']; //Lấy User và Pass từ Form
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM users WHERE user = \"$username\" AND password = \"$password\"");
if (mysql_num_rows($result) > 0) {
//Đăng nhập thành công
}
else {
//Đăng nhập không đúng Username hay Password
}
//.......
?>

- Đoạn Script trên là một đoạn Script rất đơn giản thực hiện Login thông qua câu SQL kiểm tra username và password . Câu lệnh SQL nguyên thủy là :

SELECT * FROM users WHERE user = "$username" AND password = "$password"

- Tuy nhiên, đây lại là một SQL Injection vô cùng lớn, nếu như User nhập biến User là " OR 1 OR user="

- Khi đó lệnh SQL sẽ trở thành :

SELECT * FROM users WHERE user = "" OR 1 OR user="" AND password = "$password"

- Kết quả trả về sẽ là toàn bộ user trong Database và dĩ nhiên đây là một trường hợp Login không hợp lệ (biến password cũng có thể sữ dụng để tạo SQL Injection) . Thực ra, lỗi trên là do biến $username, có thể fix bằng cách kiểm tra biến user, rồi sau đó mới kiểm tra biến pass, hoặc một cách nhanh hơn, fix được hầu hết tất cả các lỗi SQL Injection mà chỉ cần sữ dụng một hàm có sẵn của PHP, đó là hàm addslashes .

- Xin nói một chút về hàm addslashes: hàm này sẽ trả về một chuỗi với dấu \ trước các ký tự cần trích dẫn trong Database, các ký tự đó là " \ và NUL (\0) .

- Cấu trúc hàm addslashes : string addslashes ( string str)

- Nhờ có hàm addslashes mà câu lệnh SQL của ta sẽ trở thành :

SELECT * FROM users WHERE user = "\" OR 1 OR user=\"" AND password = "$password"

- Như vậy thì câu lệnh SQL sẽ hoạt động đúng như chức năng của nó . Một số lỗi SQL Injection khác cũng có thể khắc phục bằng phương pháp này. Tôi cũng xin nhắc lại là phương pháp này chỉ fix được hầu hết tất cả các lỗi SQL Injection, tức là các lỗi do biến PHP gây ra, còn các lỗi do bản thân câu lệnh SQL thì cách này không có hiệu quả gì. Tuy nhiên nếu dùng phương pháp này và câu lệnh SQL chắc chắn thì tôi tin rằng bạn sẽ không còn lo lắng về SQL Injection.

2.PHP Injection

- Lỗi PHP Injection thường xảy ra với các script đọc File, tương tác hệ thống v.v. . Đây là một điển hình của PHP Injection:

Mã lệnh (php)

PHP Code:

<?
//...
readfile($file);
//...
?>

- Thoạt nhìn thì không có lỗi gì, nhưng nếu như vì một lý do gì đó mà biến $file không được khai báo thì đây là một lỗi PHP Injection rất nặng. Nếu như Link đưa đến trang có lỗi như thế này : http://somehost.com/somescript.php?file=somescript.php

- Lúc này thì biến $file lại được khai báo bởi chính PHP, chức năng Regiser-Global và kết quả là sẽ đưa ra nội dung của file somescript.php hay bất cứ File nào trên hệ thống (kể cả File chức Password nếu hacker chịu khó mò và xem như host của chúng ta tiêu luôn).

- Nếu phân tích thì ta sẽ thấy rằng biến $file đã được khai báo do chức năng Register-Global (chức năng tự động đăng ký các biến trong GET, POST , COOKIE v.v...), và được fix một cách đơn giản là tắt chức năng này đi. Việc tắt chức năng này đi cũng không ảnh hưởng gì nhiều đến PHP.
=============================
Nguồn : vncoder.net

posted by vns3curity(HCE)
Về Đầu Trang Go down
https://itcu.forumvi.com
 
Anti PHP-SQL injection
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Mysql & PHP SQL Injection
» Javascipt Injection (bài 1)
» JavaScript Injection (bài 2)
» JavaScript Injection (bài 3)
» JavaScript Injection (bài 4)

Permissions in this forum:Bạn không có quyền trả lời bài viết
»-(¯`v´¯)-»Diễn Đàn Trường Công Nghệ Thông Tin Thái Nguyên»-(¯`v´¯)-» :: Phận Làm Trai Gõ Phím Bình Thiên Hạ--Chí Anh Hùng Click Chuột Định Giang Sơn :: Bảo mật cho website-
Chuyển đến