[Php 4> = 4.3.0, Php 5]
mysql_real_escape_string - thoát các ký tự đặc biệt trong một chuỗi để sử dụng trong câu lệnh SQL — Escapes special characters in a string for use in an SQL statement
Sự mô tả
MySQL_REAL_ESCAPE_STRING [Chuỗi $unescaped_string
, Tài nguyên $link_identifier
= NULL]: Chuỗi[string $unescaped_string
, resource $link_identifier
= NULL]:
string
MySQL_REAL_ESCAPE_STRING [] gọi chức năng thư viện của MySQL MySQL_REAL_ESCAPE_STRING, đã chuẩn bị ngược lại cho các ký tự sau: \x00
, \n
, \r
, \
, '
, "
và ____. calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00
, \n
, \r
, \
, '
, "
and
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''0.
Hàm này phải luôn luôn [với một vài ngoại lệ] được sử dụng để làm cho dữ liệu an toàn trước khi gửi truy vấn đến MySQL.
Thận trọng
Bảo mật: Bộ ký tự mặc định
Bộ ký tự phải được đặt ở cấp độ máy chủ hoặc với hàm API mysql_set_charset [] để nó ảnh hưởng đến mysql_real_escape_string []. Xem phần Khái niệm trên các bộ ký tự để biết thêm thông tin.mysql_set_charset[] for it to affect mysql_real_escape_string[]. See the concepts section on character sets for more information.
Thông số
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''1
Chuỗi sẽ được thoát ra.
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''2
Kết nối MySQL. Nếu định danh liên kết không được chỉ định, liên kết cuối cùng được mở bởi mysql_connect [] được giả định. Nếu không tìm thấy liên kết như vậy, nó sẽ cố gắng tạo một liên kết như thể mysql_connect [] đã được gọi mà không có đối số. Nếu không tìm thấy kết nối hoặc thiết lập, lỗi cấp
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''3 được tạo ra.mysql_connect[] is assumed. If no such link is found, it will try to create one as if mysql_connect[] had been called with no arguments. If no connection is found or established, an
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''3 level error is generated.
Trả về giá trị
Trả về chuỗi thoát hoặc
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''4 về lỗi.
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''4 on error.
Errors/Exceptions
Thực hiện chức năng này mà không có kết nối MySQL hiện tại cũng sẽ phát ra các lỗi PHP cấp
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''3. Chỉ thực thi chức năng này với kết nối MySQL hợp lệ.
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''3 level PHP errors. Only execute this function with a valid MySQL connection present.
Ví dụ
Ví dụ #1 Simple MySQL_REAL_ESCAPE_STRING [] Ví dụmysql_real_escape_string[] example
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''6
Ví dụ #2 mysql_real_escape_string [] yêu cầu một ví dụ kết nốimysql_real_escape_string[] requires a connection example
Ví dụ này cho thấy những gì xảy ra nếu kết nối MySQL không có mặt khi gọi chức năng này.
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''7
Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:
Warning: mysql_real_escape_string[]: No such file or directory in /this/test/script.php on line 5 Warning: mysql_real_escape_string[]: A link to the server could not be established in /this/test/script.php on line 5 bool[false] string[41] "SELECT * FROM actors WHERE last_name = ''"
Ví dụ #3 Một ví dụ về cuộc tấn công tiêm SQL
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''8
Truy vấn được gửi đến MySQL:
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''
Điều này sẽ cho phép bất cứ ai đăng nhập mà không cần mật khẩu hợp lệ.
Ghi chú
Ghi chú::
Một kết nối MySQL được yêu cầu trước khi sử dụng mysql_real_escape_string [] nếu không một lỗi của cấp
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''3 được tạo vàSELECT * FROM users WHERE user='aidan' AND password='' OR ''=''4 được trả về. NếuSELECT * FROM users WHERE user='aidan' AND password='' OR ''=''2 không được xác định, kết nối MySQL cuối cùng được sử dụng.mysql_real_escape_string[] otherwise an error of levelSELECT * FROM users WHERE user='aidan' AND password='' OR ''=''3 is generated, andSELECT * FROM users WHERE user='aidan' AND password='' OR ''=''4 is returned. IfSELECT * FROM users WHERE user='aidan' AND password='' OR ''=''2 isn't defined, the last MySQL connection is used.
Ghi chú::
Một kết nối MySQL được yêu cầu trước khi sử dụng mysql_real_escape_string [] nếu không một lỗi của cấp
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''3 được tạo vàSELECT * FROM users WHERE user='aidan' AND password='' OR ''=''4 được trả về. NếuSELECT * FROM users WHERE user='aidan' AND password='' OR ''=''2 không được xác định, kết nối MySQL cuối cùng được sử dụng.stripslashes[] to the data. Using this function on data which has already been escaped will escape the data twice.
Ghi chú::
Một kết nối MySQL được yêu cầu trước khi sử dụng mysql_real_escape_string [] nếu không một lỗi của cấp
SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''3 được tạo vàSELECT * FROM users WHERE user='aidan' AND password='' OR ''=''4 được trả về. NếuSELECT * FROM users WHERE user='aidan' AND password='' OR ''=''2 không được xác định, kết nối MySQL cuối cùng được sử dụng.
Nếu Magic_quotes_GPC được bật, trước tiên hãy áp dụng các stripslashes [] vào dữ liệu. Sử dụng chức năng này trên dữ liệu đã được thoát ra sẽ thoát khỏi dữ liệu hai lần.: mysql_real_escape_string[] does not escape
$unescaped_string
2 and$unescaped_string
3. These are wildcards in MySQL if combined with$unescaped_string
4,$unescaped_string
5, or$unescaped_string
6.
Nếu chức năng này không được sử dụng để thoát dữ liệu, truy vấn dễ bị tấn công SQL.
- Lưu ý: MySQL_REAL_ESCAPE_STRING [] không thoát
$unescaped_string
2 và$unescaped_string
3. Đây là những ký tự đại diện trong MySQL nếu kết hợp với$unescaped_string
4,$unescaped_string
5 hoặc$unescaped_string
6. - Xem thêm
- mysql_set_charset [] - Đặt bộ ký tự máy khách
- mysql_client_encoding [] - Trả về tên của bộ ký tự
- AddSlashes [] - Chuỗi trích dẫn với dấu gạch chéo
- StripsLashes [] - Un -Quotes một chuỗi được trích dẫn
Chỉ thị Magic_quotes_GPC ¶
Chỉ thị Magic_quotes_Runtime
$unescaped_string
7
$unescaped_string
8
$unescaped_string
9
$link_identifier
0Feedr ¶ ¶
11 năm trước
$link_identifier
1
Nicolas ¶ ¶
16 năm trước
$link_identifier
2
$link_identifier
3
$link_identifier
4
$link_identifier
5
$link_identifier
6
$link_identifier
7
$link_identifier
8
$link_identifier
9
\x00
0
\x00
1
\x00
2
\x00
3
\x00
4Sam tại numbbsafari dot com ¶ ¶
10 năm trước
\x00
5
\x00
6
\x00
7
\x00
8
\x00
4Rohankumar Dot 1524 tại Gmail Dot Com ¶ ¶
1 năm trước
\n
0
\n
1
\n
2
\n
3
\n
4Strata_ranger tại hotmail dot com ¶
12 năm trước
\n
5
PLGS tại Ozemail Dot Com Dot Au ¶ ¶
13 năm trước
\n
6
Aljo ¶ ¶
4 năm trước
\n
7
\n
8
\n
9
\r
0
\r
1
\r
2
\r
3
\r
4
\r
5
\r
6
\r
7
\r
8
\r
9
\
0
\
1
\
2
\
3
\x00
4Jonnie ¶ ¶
1 năm trước
\
5
\
6
\x00
4