MYSQL_ESCAPE_STRING LÀ GÌ
Trong toàn bộ các nhiều loại tấn công nhằm mục đích vào các trang web hiện nay này thì SQL Injection là trong số những loại tấn công nguy nan và thông dụng nhất, nó đã gây thiệt hại không nhỏcho những doanh nghiệp và tổ chức trong vô số nhiều năm quay lại đây. Trước lúc tìm giải pháp bảo về website của bọn họ trước nó thì cần phải mày mò xem liệu nó là gì và phương pháp nó vận động ra sao.Tóm lại, SQL injection - nói một cách khác tắt là SQLi - sử dụng những lỗ hổng trong các input nguồn vào của website để nhằm mục đích mục đích tổn hại cho website của bọn chúng ta. Cụ thể là chúng dựa vào các câu lệnh SQL để tấn công cắp tin tức nhạy cảm của bạn dùng, đổi khác cơ sở dữ liệu, ngăn cản sự buổi giao lưu của hệ thống... Vào trường vừa lòng xấu nhất hoàn toàn có thể xảy ra thì nó có thể chiềm quyền sử dụng cơ sở tài liệu của bọn họ . (RIP me).Dưới đó là những gì cơ mà mình cho rằng bạn nên biết về SQL injection và làm thế nào để bảo đảm an toàn trang web của chúng ta chống lại nó. (Hi vọng cùng với những tin tức mình cung cấp có thể "make your website better" ).
Bạn đang xem: Mysql_escape_string là gì
Khi người dùng nhập thông tin đăng nhập với bấm login, thông tin của người dùng sẽ được nhờ cất hộ một tới servert thông qua một POST request sau đó sẽ được gán vào trong 1 câu lệnh SQL. Đoạn code đó sẽ trông như này:$sql_command = "select * from users where username = "" . $_POST<"username">; $sql_command .= "" và password = "" . $_POST<"password"> . """; Đoạn code này sẽ kế tiếp sẽ được lên máy chủ cơ sở dữ liệu. Hiệu quả trả về củanó sẽ khám nghiệm được người dùng nhập vào có hợp lệ hay bao gồm phải là người dùng trong khối hệ thống hay không?. Một lấy ví dụ như là người dùng có username là "john" với password là "123456" (đừng lúc nào dùng password này) thì đoạn mã bên trên sẽ gửi thành đoạn SQL như sau:SELECT * FROM users WHERE username="john" và password="123456" Đấy là ngôi trường hợp người tiêu dùng nhập thông tin hợp lệ (ở đây có nghĩa là họ nhập đúng chuẩn username chỉ bao gồm chữ hoặc số ...) Vậy thì điều gì xảy ra lúc học nhập tin tức như mặt dưới:
Kết quả của đoạn code phía bên trên hiện thời sẽ được biên dịch thành như này:SELECT * FROM users WHERE username="john" OR 1=1; -- " & password="123456" Phần chất vấn password đã bị phản hồi lại. Công dụng trả về đã là thông tin của người tiêu dùng có username là "john" nhưng không quan trọng phải biết mật khẩu.Bằng mẹo nhỏ này thì ta đã có quyền quy cập của người dùng mà chỉ cần biết username của tín đồ đó.Đây là một trong những ví dụ điển hình nổi bật và đơn giản và dễ dàng nhất của SQLi. Bởi một vài mẹo nhỏ thì fan dùng có thể thêm, sửa thậm chí còn là xóa các người dùng trong hệ thống. Học hoàn toàn có thể đánh cắp toàn bộ thông tin người dùng chỉ bởi một đoạn lệnh cực kỳ ngắn.Trong trường hòa hợp xấu hơn, khi mà kết nối đến máy chủ cơ sở tài liệu được tạo ra (và kiểm soát) vị một tài khoản admin (giống như thông tin tài khoản root trong MySQL ), kẻ tấn công có thể làm những điềuhơn thế. Hắn rất có thể sử dụng lỗ hổng SQLi để tạo nên tài khoản người tiêu dùng trên máy chủ bị tấn công, kích hoạt chức năng Remote Desktop, tùy chỉnh cấu hình SMB phân chia sẽ các thư mục và mua lên những mã độc khác.Nguyên tắc 1: Đừng bao giờ tin vào thông tin người dùng nhập vào.
Nguyên tắc thứ nhất cũng là lớn nhất về input người tiêu dùng nhập và là "don"t trust & verify" - nó tức là tất cả các form từ người dùng nhập lên rất cần phải được kiểm trông nom một bí quyết nghiêm chỉnh. Nó ko chỉ bao gồm những input boxes như giao diện textarea hay input text mà nó còn bao gồm rất nhiều những khác ví dụ như hidden input, query string parameters, cookies với file uploads.Không buộc phải là browser của chúng ta không đến phép biến đổi các tin tức mà ta gửi đi thì ta ko thể thay đổi nó. Có một tool thương hiệu là Burp Suitecho phép người dùng hoàn toàn có thể capture lại HTTP request và thay đổi nó, thêm các hidden input trước lúc gửi nó mang đến server. Và nếu khách hàng nghĩ rằng bản thân thông minh bằng cách sử dụng Base64 nhằm mã hóa dữ liệu của chính bản thân mình thì nó rất có thể giải mã một cách dễ dàng, sửa đổi với tái mã hóa.
Xem thêm: Rắc Rối Khi Cài Vcredist Là Gì ? Cách Loại Bỏ Như Thế Nào? Should I Delete It
Một số chú ý về tính toán:Nếu các bạn đã thêm bài toán validate tài liệu ở client side thì fan dùng có thể pass quanhững validation phía client side bằng những sửa những mã HTML họ nhận thấy hay tắt những javascript ở phía client đi.Trong một số trong những ngôn ngữ lập trình, ví dụ như ASP.NET, bao gồm các tính năng tự động hóa xem xét các dữ liệu nguồn vào và sử dụng các bộ lọc để thải trừ nó. Nhưng điều này vẫn hoàn toàn có thể bị tin tặc lách qua nếu đầy đủ tinh tế. Dù sao thì việc kiểm tra dữ liệu đầu vào cũng chẳng lúc nào là điều quá bình yên cả.
Bạn đang xem: Mysql_escape_string là gì
SQL Injection tiến công như nào?
Biết fan biết ta - trăm trận trăm thắng - Tôn tửSQL injection (gọi là SQLi mang lại ngắn vậy) được tổ chức triển khai (organized) bằng phương pháp gửi những lệnh SQL độc hạiđến các máy chủ các đại lý dữ liệu thông qua các request mà trang web bạn đến phép, lấy một ví dụ như những lệnh đăng nhập. Bất kì những đầu vào trang web của người tiêu dùng ( các thẻ input, các query string, cookies cùng files ) để hoàn toàn có thể được thực hiện để gửi những mã độc.Để xem các mà nó làm việc, bạn cũng có thể nhìn vào form singin dưới đây. Nó bao hàm hai input đầu vào để nhập username với password, một nút submit để gửi dữ liệu.

Vậy làm nắm nào để đảm bảo an toàn khỏi tấn công SQL Injection?
Với mỗi một kênh nguồn vào ( input element, file, cookies ...) sẽ khớp ứng với một kiểu tấn công SQLi. Cách rất tốt để đảm bảo an toàn khỏi tấn công SQLi là điều hành và kiểm soát các tài liệu đầu vào trang web của bạn.Dưới trên đây sẽ là một vài phương thức hữu ích để bảo vệ rằng input người tiêu dùng nhập vào là an toàn:Nguyên tắc 1: Đừng bao giờ tin vào thông tin người dùng nhập vào.
Xem thêm: Hãy Nhớ Câu ' Nhập Gia Tùy Tục Là Gì, Nhập Gia Tuỳ Tục
Nguyên tắc thứ nhất cũng là lớn nhất về input người tiêu dùng nhập và là "don"t trust & verify" - nó tức là tất cả các form từ người dùng nhập lên rất cần phải được kiểm trông nom một bí quyết nghiêm chỉnh. Nó ko chỉ bao gồm những input boxes như giao diện textarea hay input text mà nó còn bao gồm rất nhiều những khác ví dụ như hidden input, query string parameters, cookies với file uploads.Không buộc phải là browser của chúng ta không đến phép biến đổi các tin tức mà ta gửi đi thì ta ko thể thay đổi nó. Có một tool thương hiệu là Burp Suitecho phép người dùng hoàn toàn có thể capture lại HTTP request và thay đổi nó, thêm các hidden input trước lúc gửi nó mang đến server. Và nếu khách hàng nghĩ rằng bản thân thông minh bằng cách sử dụng Base64 nhằm mã hóa dữ liệu của chính bản thân mình thì nó rất có thể giải mã một cách dễ dàng, sửa đổi với tái mã hóa.Nguyên tắc 2 : Validate tài liệu trên hệ thống side.
Validation là quá trình để bảo vệ dữ liệu người tiêu dùng gửi lên là vừa lòng lệ. Ví dụ sống trong PHP, chúng ta có thể dùng hàmmysql_real_escape_string() để đào thải những kí tự hoàn toàn có thể gây tác động đến câu lệnh SQL.Đoạn code thứ nhất sẽ sửa thành như này:$con=mysqli_connect("localhost","user","password","db");$username = mysqli_real_escape_string($con, $_POST<"username">); $password = mysqli_real_escape_string($con, $_POST<"password">); $sql_command = "select * from users where username = "" . $username; $sql_command .= "" and password = "" . $password . """; Edit một chút đã giúp bảo đảm an toàn code của chúng ta trước tấn công SQLi bằng phương pháp thêm vào kí tự() trước những dấu nháy đối kháng mà người tiêu dùng có ý thêm vào.Xem thêm: Rắc Rối Khi Cài Vcredist Là Gì ? Cách Loại Bỏ Như Thế Nào? Should I Delete It
Một số chú ý về tính toán:Nếu các bạn đã thêm bài toán validate tài liệu ở client side thì fan dùng có thể pass quanhững validation phía client side bằng những sửa những mã HTML họ nhận thấy hay tắt những javascript ở phía client đi.Trong một số trong những ngôn ngữ lập trình, ví dụ như ASP.NET, bao gồm các tính năng tự động hóa xem xét các dữ liệu nguồn vào và sử dụng các bộ lọc để thải trừ nó. Nhưng điều này vẫn hoàn toàn có thể bị tin tặc lách qua nếu đầy đủ tinh tế. Dù sao thì việc kiểm tra dữ liệu đầu vào cũng chẳng lúc nào là điều quá bình yên cả.