Hướng dẫn dùng zlibr trong PHP

Câu truy vấn trên có ý nghĩa là gì? Mệnh đề WHERE của câu truy vấn trên luôn đúng, lí do là vì ‘t’=’t’ luôn cho ra giá trị đúng. Như vậy, thay vì trả về kết quả của 1 dòng dữ liệu mong muốn, câu truy vấn này trả về kết quả là toàn bộ dữ liệu của bảng users.

  • Nguyên nhân chính của việc truy vấn sai này chính là do dữ liệu của tham số truyền vào. Hãy tưởng tượng rằng toàn bộ dữ liệu này bị sử dụng nhằm mục đích không tốt, hậu quả thật khó lường phải không nào?

Ví dụ 2

Nguy hiểm hơn nữa nếu người dùng nhập vào trường input với giá trị như sau:

a' or 't'='t'; DROP TABLE users;

Khi đó câu lệnh SQL từ ứng dụng gửi lên database server sẽ như sau:

SELECT * FROM users 
WHERE name = 'a' or 't'='t'; DROP TABLE users;

Và toàn bộ các bản ghi trên bảng users sẽ bị xoá bỏ!

Các trường hợp thường bị tấn công Sql injection

  • Bất cứ thao tác nào của ứng dụng có thực hiện truy vấn tới cơ sở dữ liệu đều có thể bị lợi dụng để tấn công Sql injection. Các thao tác cơ bản với CSDL là: select, insert, update đều có thể bị tấn công. Có thể kể ra vài thao tác phổ biến có thể tấn công như:
  • Kiểm tra đăng nhập ứng dụng.
  • Thao tác lưu comment của user xuống DB.
  • Thao tác truy vấn thông tin user.

Cách phòng tránh lỗi Sql injection trong PHP

  • Như đã phân tích ở trên: điểm để tấn công chính là tham số truyền vào câu truy vấn. Do vậy phải thực hiện các biện pháp phòng chống để đảm bảo việc kiểm tra dữ liệu truyền vào không thể gây ra sai lệch khi thực hiện truy vấn.
  • Giải pháp cho việc kiểm tra này là sử dụng “chuỗi escape”. Khi thực hiện escape một chuỗi, tức là mã hoá các kí tự đặc biệt của chuỗi (như kí tự ‘, &, |, …) để nó không còn được hiểu là 1 kí tự đặc biệt nữa. Mỗi ngôn ngữ lập trình đều cung cấp các hàm để thực hiện escape chuỗi, với PHP ta sẽ sử dụng hàm mysqli_real_escape_string() hoặc cũng có thể dùng addslashes() để thực hiện điều này.
  • Ví dụ về hàm addslashes(): kí tự nháy kép lúc này không còn được hiểu là kí tự điểu khiển nữa.

Sử dụng hàm addslashes() trong PHP

Các dữ liệu nhận về từ người dùng gởi đến (send REQUEST GET/POST) cần đưa vào hàm addslashes() để thêm vào các ký tự dấu \ nếu phát hiện trong dữ liệu gởi đến có các ký tự sau:

  • single quote (‘)
  • double quote (“)
  • backslash (\)
  • NULL

hoặc sử dụng hàm `mysqli_real_escape_string($con, $_POST['username']);` của thư viện mysql. Kết quả cũng tương tự.

- Ví dụ phía trên là chúng ta lấy toàn bộ nội dung của tập tin, để lấy một phần nội dung của tập tin thì chúng ta sử dụng cú pháp như sau:

file_get_contents(đường dẫn đến tập tin mà bạn muốn lấy nội dung, 0, NULL, start, length)

- Trong đó:

Tham sốYêu cầuMô tảstartKhông bắt buộc

- Chỉ định vị trí mà bạn muốn bắt đầu lấy.

lengthKhông bắt buộc

- Chỉ định số lượng byte mà bạn muốn lấy.

- Biến $text sẽ có giá trị là chuỗi:

- Biến $text sẽ có giá trị là chuỗi:


    
        Lap Trin</code></pre><pre><code><?php
    $text = file_get_contents("http://webcoban.vn/file/myCode_01.html", 0, NULL, 6, 40);
?></code></pre><p>- Biến $text sẽ có giá trị là chuỗi:</p><pre><code><html>
    <head>
        <title>Lap Trinh Web
    
    
        

Tai lieu huong dan hoc Lap Trinh Web

HTML & CSS

Ngon ngu lap trinh PHP

0

File_get_contents là một trong những hàm thường gặp khi làm việc với ngôn ngữ PHP. Để hiểu và sử dụng thành thạo bạn hãy xem các ví dụ cụ thể sau.

Phần tử danh sách (list) được sử dụng rất thường xuyên trong một tài liệu web bằng HTML. Trong một trang web thường người ta sử dụng các phần tử danh sách rất nhiều, chẳng hạn như menu, danh sách những thông tin nào đó,…v…v…đều được tạo ra bởi các thẻ tạo danh sách trong HTML.

Nội dung chính Show

  • Ordered List
  • Unordered List
  • Description List
  • Xếp chồng danh sách
  • Lời kết

Trong HTML có ba kiểu danh sách (list type) đó là kiểu sắp xếp (ordered list), kiểu không sắp xếp (unordered list) và kiểu danh sách mô tả (description list). Cụ thể:

  • Kiểu sắp xếp (Ordered List): Là kiểu hiển thị một danh sách mà các mục con của nó được sắp xếp theo thứ tự bằng số hoặc chữ cái.
  • Kiểu không sắp xếp (Unordered List): Là kiểu hiển thị danh sách mà các mục con của nó sẽ không được sắp xếp theo thứ tự mà chỉ được đánh dấu bằng một ký tự đặc trưng.
  • Kiểu mô tả (Description List): Là kiểu hiển thị danh sách mà các mục con của nó sẽ không được đánh dấu thứ tự, nhưng sẽ có kèm theo một đoạn miêu tả.

Dưới đây là hình ảnh sự khác nhau giữa ba kiểu danh sách do W3School mô tả:

Hướng dẫn dùng zlibr trong PHP

Ordered List

Để khai báo một danh sách với kiểu được sắp xếp, bạn phải bắt đầu bằng cặp thẻ

. Bên trong cặp thẻ này sẽ là danh sách các mục con, mỗi mục sẽ đặt trong cặp thẻ
  • , xem ví dụ bên dưới.

    Xem ví dụ: http://codepen.io/thachpham92/pen/QwPewe/

    Thẻ

       cũng hỗ trợ thêm một thuộc tính nữa tên làtype, thuộc tính này là để bạn thiết lập kiểu sắp xếp các mục con bên trong danh sách. Giá trị của thuộc tính type là 1, i, I, a, A.

      Unordered List

      Giống như Ordered List, kiểu danh sách Unordered List sẽ bắt đầu bằng cặp thẻ

       và bên trong nó các mục con sẽ được khai báo bằng cặp thẻ
    1. .

      Xem ví dụ: http://codepen.io/thachpham92/pen/wBZVvO/

      Bạn cũng có thể thay đổi kiểu hiển thị của thẻ

         bằng cách thêm thuộc tính style với thuộc tính CSS là
      1. 2 và giá trị là
      2. 3,
      3. 4,
      4. 5 và
      5. 6.

        Description List

        Với kiểu danh sách này thì cách viết thẻ hơi khác một tí, đó là nó sẽ bắt đầu danh sách bằng cặp thẻ

      6. 7, trong đó tên mỗi mục con sẽ được khai báo bằng cặp thẻ
      7. 8 và mô tả cho mục con sẽ được khai báo bằng cặp thẻ 
      8. 9

        Xem ví dụ: http://codepen.io/thachpham92/pen/zxXgxo/

        Xếp chồng danh sách

        Trong HTML, bạn có thể tiến hành xếp chồng một danh sách vào nhiều tầng bằng cách lồng thêm một danh sách nữa vào cặp thẻ

      9.  của mục con mà bạn muốn thêm tầng cho nó, như ví dụ dưới đây.

        Xem ví dụ: http://codepen.io/thachpham92/pen/ogOKgo/

        Lời kết

        Quá dễ dàng để khai báo phần tử danh sách trong HTML phải không nào? Vốn dĩ HTML luôn dễ dàng như vậy mà. Cố gắng lên nào, chỉ còn vài phần tử quan trọng nữa thôi là bạn đã thành chuyên gia HTML rồi.

        Thạch Phạm

        Bé Thạch 18 tuổi, hiện công tác tại AZDIGI với vị trí giữ xe và viết thuê tại ThachPham.Com. Sở thích nghiên cứu về website, DevOps, SysAdmin và xăm mình nữa. Phương châm sống của bé là "No Pain, No Gain".

        Hiện tại blog tạm đóng bình luận vì mình cần tập trung thời gian vào cập nhật bài viết. Bình luận sẽ mở ra cho đến khi mình sẵn sàng.