1. Trang chủ
  2. » Thể loại khác

injection trong sqlite

2 140 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

http://vietjack.com/sqlite/index.jsp                                                                                                              Copyright  ©  vietjack.com     INJECTION SQLite Nếu bạn nhận User Input thông qua Webpage chèn vào SQLite Database, tình cờ, bạn mở rộng cửa bảo mật bên ngoài, mà biết đến với tên gọi SQL Injection Chương hướng dẫn bạn cách ngăn cản tình xảy giúp bạn bảo vệ Script bạn lệnh SQLite bạn Injection thường xảy bạn yêu cầu input từ người dùng, tên họ, thay cung cấp tên, họ cung cấp cho bạn lệnh SQLite mà bạn chạy Database mà khơng hay biết Đừng tin vào liệu cung cấp người dùng, xử lý liệu này, qui tắc, điều thực Pattern Matching (so khớp mẫu) if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches)){ $db = new SQLiteDatabase('filename'); $result = @$db->query("SELECT * FROM users WHERE username=$matches[0]"); }else{ echo "username not accepted"; } Để minh họa vấn đề, bạn xem phần trích sau: $name = "Qadir'; DELETE FROM users;"; @$db->query("SELECT * FROM users WHERE username='{$name}'"); Lời gọi hàm xem để lấy ghi từ bảng users, với cột name so khớp với name xác định người dùng Thông thường, $name chứa ký tự chữsố có khoảng trống Nhưng đây, việc phụ thêm truy vấn hoàn toàn tới $name, lời gọi tới Database gây vấn đề lớn: truy vấn DELETE bị tiêm vào xóa tất ghi từ bảng users Có số Database không cho phép Query Stacking thực thi nhiều truy vấn lời gọi hàm đơn Nếu bạn nỗ lực để thực nhiều truy vấn, lời gọi hàm thất bại Tuy nhiên, với SQLite PostgreSQL, lại cho thực nhiều truy vấn, thực thi tất truy vấn cung cấp chuỗi điều tạo vấn đề nghiêm trọng Ngăn cản SQL Injection Bạn xử lý tất Escape Character cách khéo léo ngôn ngữ Scripting PERL PHP Ngơn ngữ lập trình PHP cung cấp hàm sqlite_escape_string() để tránh ký tự nhập vào mà có ý nghĩa đặc biệt với SQLite http://vietjack.com/                                                                                                                              Trang  chia  sẻ  các  bài  học  online  miễn  phí     http://vietjack.com/sqlite/index.jsp                                                                                                              Copyright  ©  vietjack.com     if (get_magic_quotes_gpc()) { $name = sqlite_escape_string($name); } $result = @$db->query("SELECT * FROM users WHERE username='{$name}'"); Mặc dù việc mã hóa đảm bảo an tồn chèn liệu, trả lại so sánh text mệnh đề LIKE truy vấn bạn khơng thích hợp cho cột mà chứa liệu nhị phân Bạn nhớ hàm addcslashes() khơng nên sử dụng để trích dẫn chuỗi bạn cho truy vấn SQLite Nó tạo kết kì quặc lấy liệu bạn   http://vietjack.com/                                                                                                                              Trang  chia  sẻ  các  bài  học  online  miễn  phí     ...http://vietjack.com /sqlite/ index.jsp                                                                                ...                          Copyright  ©  vietjack.com     if (get_magic_quotes_gpc()) { $name = sqlite_ escape_string($name); } $result = @$db->query("SELECT * FROM users WHERE username='{$name}'");... chứa liệu nhị phân Bạn nhớ hàm addcslashes() không nên sử dụng để trích dẫn chuỗi bạn cho truy vấn SQLite Nó tạo kết kì quặc lấy liệu bạn   http://vietjack.com/                                  

Ngày đăng: 02/12/2017, 11:24

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN