intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Anti PHP-SQL Injection

Chia sẻ: Abcdef_45 Abcdef_45 | Ngày: | Loại File: PDF | Số trang:4

73
lượt xem
10
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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ó í dụ như chúng ta có một Script kiểm tra đăng nhập như sau : 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...

Chủ đề:
Lưu

Nội dung Text: Anti PHP-SQL Injection

  1. 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ó í dụ như chúng ta có một Script kiểm tra đăng nhập nh ư sau :
  2. - Đ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) .
  3. - 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: - 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ư
  4. 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. Nguyễn Quốc Bảo theo vncoder.net
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2