PHP thêm dấu gạch chéo ngược vào chuỗi

Một ví dụ về cách sử dụng dấu gạch chéo[] là khi bạn nhập dữ liệu vào chuỗi được đánh giá bởi PHP. Ví dụ: O'Reilly được lưu trữ trong $str, bạn cần thoát $str. [e. g. eval["tiếng vang '". dấu gạch chéo[$str]. "';"];

Để thoát các tham số cơ sở dữ liệu, chức năng thoát cụ thể của DBMS [e. g. mysqli_real_escape_string[] cho MySQL hoặc pg_escape_literal[], pg_escape_string[] cho PostgreSQL] nên được sử dụng vì lý do bảo mật. Các DBMS có đặc tả thoát khác nhau cho các định danh [e. g. tên bảng, tên trường] so với tham số. Một số DBMS như PostgreSQL cung cấp chức năng thoát định danh, pg_escape_identifier[], nhưng không phải tất cả DBMS đều cung cấp API thoát định danh. Nếu trường hợp này xảy ra, hãy tham khảo hướng dẫn sử dụng hệ thống cơ sở dữ liệu của bạn để biết phương pháp thoát thích hợp

Nếu DBMS của bạn không có hàm thoát và DBMS sử dụng \ để thoát các ký tự đặc biệt, thì bạn chỉ có thể sử dụng hàm này khi phương thức thoát này phù hợp với cơ sở dữ liệu của bạn. Xin lưu ý rằng việc sử dụng các dấu gạch chéo [] để thoát tham số cơ sở dữ liệu có thể là nguyên nhân gây ra sự cố bảo mật trên hầu hết các cơ sở dữ liệu

Lệnh PHP được bật theo mặc định trước PHP 5. 4 và về cơ bản, nó đã chạy addlashes[] trên tất cả dữ liệu GET, POST và COOKIE. Không sử dụng addlashes[] trên các chuỗi đã được thoát vì sau đó bạn sẽ thực hiện thoát kép. Hàm get_magic_quotes_gpc[] có thể hữu ích để kiểm tra điều này

Rất thường xuyên, bạn sẽ làm việc trong các tình huống mà dấu ngoặc đơn ', dấu ngoặc kép " và dấu gạch chéo ngược \ có thể gây ra sự cố - cơ sở dữ liệu, tệp và một số giao thức yêu cầu bạn thoát chúng bằng \, tạo \', \", và \\ tương ứng. Addslashes[] lấy một chuỗi làm tham số duy nhất của nó và trả về cùng một chuỗi với các ký tự vi phạm này được thoát để chúng an toàn khi sử dụng

Mặc dù bạn có thể sử dụng addlashes[] với cơ sở dữ liệu, nhưng điều này không được khuyến nghị vì nó chỉ thoát khỏi dấu ngoặc kép, điều này để lại một số văn bản nguy hiểm tiềm ẩn khác trong đầu vào của bạn. Nếu bạn đang tìm cách thoát chuỗi cho cơ sở dữ liệu, bạn nên sử dụng mysqli_real_escape_string[] hoặc tương đương cho cơ sở dữ liệu của mình

Lưu ý rằng việc gọi hàm addlashes[] nhiều lần sẽ thêm ngày càng nhiều dấu gạch chéo, như thế này


Sau khi chạy mã đó, bạn sẽ có như sau


1

Lý do số lượng dấu gạch chéo tăng nhanh như vậy là do PHP sẽ thêm dấu gạch chéo trước mỗi dấu ngoặc đơn, cũng như dấu gạch chéo trước mỗi dấu ngoặc kép

Addslashes[] có một bản sao, dải gạch chéo[], loại bỏ một bộ dấu gạch chéo. Tiếp tục từ đoạn mã trước, do đó chúng ta có thể có


Sau khi chạy mã mới sau mã cũ, chúng tôi nhận được


2

Bạn muốn học PHP 7?

Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay

Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó

Để thêm dấu gạch chéo ngược bên trong mảng chuỗi, hãy sử dụng json_encode[]

Giả sử sau đây là mảng của chúng ta -

$value = [
   "ADD", "REMOVE","SELECT","MODIFY"
];

Chúng tôi muốn đầu ra có dấu gạch chéo ngược bên trong mảng chuỗi i. e −

"[\"ADD\",\"REMOVE\",\"SELECT\",\"MODIFY\"]"

Ví dụ

Mã PHP như sau -

Bản thử trực tiếp



";
?>

đầu ra

Điều này sẽ tạo ra đầu ra sau

"[\"ADD\",\"REMOVE\",\"SELECT\",\"MODIFY\"]"

Khi dấu gạch chéo ngược \ không thoát khỏi trích dẫn kết thúc của chuỗi hoặc thậm chí tạo ra một chuỗi thoát hợp lệ [trong chuỗi trích dẫn kép], thì mã bên dưới có thể được sử dụng để tạo một dấu gạch chéo ngược -

Ví dụ

Bản thử trực tiếp

$string = 'abc\def';
print[$string];

đầu ra

Điều này sẽ tạo ra đầu ra sau -

abc\def

Ví dụ

Bản thử trực tiếp

________số 8

đầu ra

Điều này sẽ tạo ra đầu ra sau -

abc\def

Mặc dù chức năng này có thể được sử dụng để chuẩn bị chuỗi của bạn cho việc lưu trữ hoặc truy vấn cơ sở dữ liệu, nhưng bạn không nên sử dụng chức năng này

Điều này là do cơ sở dữ liệu có các hàm thoát cụ thể của riêng chúng, như


3 cho mySQL và

00 cho PostgreSQL

Làm cách nào để thêm dấu gạch chéo trong PHP?

Hàm addlashes[] của PHP được sử dụng để trả về một chuỗi trích dẫn có dấu gạch chéo. Nó hoạt động với một số ký tự. Dấu nháy đơn ['] Dấu nháy kép["] .

Chủ Đề