Nút js mysql chuỗi thoát thực
Tôi có một biểu mẫu đăng việc làm ngay bây giờ bất cứ khi nào người dùng nhập dữ liệu và tôi sử dụng chuỗi thoát thực mysql nó chèn dữ liệu trống vào mysql lý do có thể là gì? . vấn đề là tôi không thể tin tưởng vào đầu vào của người dùng, đó là lý do tại sao tôi muốn sử dụng chuỗi mysql_real_escape. tôi đã thử và thay đổi mã từ 2 giờ nhưng không mã nào cho tôi kết quả tốt
ngăn xếp chồng lên nhau. com var SqlString = require('sqlstring');1 var SqlString = require('sqlstring');2 var SqlString = require('sqlstring');3 var SqlString = require('sqlstring');4 Thận trọng Các phương pháp thoát giá trị này chỉ hoạt động khi chế độ SQL NO_BACKSLASH_ESCAPES bị tắt (là trạng thái mặc định cho máy chủ MySQL) Thận trọng Thư viện này thực hiện thoát phía máy khách, vì đây là thư viện để tạo chuỗi SQL ở phía máy khách. Cú pháp của các hàm như var SqlString = require('sqlstring');5 có thể trông giống như một câu lệnh đã chuẩn bị, nhưng không phải vậy và các quy tắc thoát từ mô-đun này được sử dụng để tạo chuỗi SQL kết quả. Mục đích của việc thoát đầu vào là để tránh các cuộc tấn công SQL Injection. Để hỗ trợ hỗ trợ nâng cao như định dạng var SqlString = require('sqlstring');6 và var SqlString = require('sqlstring');7, mô-đun này sẽ thoát ra dựa trên hình dạng của giá trị được truyền trong JavaScript và chuỗi thoát kết quả có thể nhiều hơn một giá trị. Khi đầu vào của người dùng có cấu trúc được cung cấp dưới dạng giá trị để thoát, cần cẩn thận để xác thực hình dạng của đầu vào để xác thực đầu ra sẽ như mong đợi Để tránh các cuộc tấn công SQL Injection, bạn phải luôn thoát mọi dữ liệu do người dùng cung cấp trước khi sử dụng nó trong một truy vấn SQL. Bạn có thể làm như vậy bằng cách sử dụng phương pháp var SqlString = require('sqlstring');8 var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + SqlString.escape(userId); console.log(sql); // SELECT * FROM users WHERE id = 'some user provided value' Ngoài ra, bạn có thể sử dụng các ký tự var SqlString = require('sqlstring');9 làm trình giữ chỗ cho các giá trị mà bạn muốn thoát như thế này var userId = 1; var sql = SqlString.format('SELECT * FROM users WHERE id = ?', [userId]); console.log(sql); // SELECT * FROM users WHERE id = 1 Nhiều trình giữ chỗ được ánh xạ tới các giá trị theo thứ tự như đã thông qua. Ví dụ: trong truy vấn sau đây, var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + SqlString.escape(userId); console.log(sql); // SELECT * FROM users WHERE id = 'some user provided value'0 bằng với var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + SqlString.escape(userId); console.log(sql); // SELECT * FROM users WHERE id = 'some user provided value'1, var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + SqlString.escape(userId); console.log(sql); // SELECT * FROM users WHERE id = 'some user provided value'2 bằng với var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + SqlString.escape(userId); console.log(sql); // SELECT * FROM users WHERE id = 'some user provided value'3, var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + SqlString.escape(userId); console.log(sql); // SELECT * FROM users WHERE id = 'some user provided value'4 bằng với var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + SqlString.escape(userId); console.log(sql); // SELECT * FROM users WHERE id = 'some user provided value'5 và var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + SqlString.escape(userId); console.log(sql); // SELECT * FROM users WHERE id = 'some user provided value'6 sẽ là var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + SqlString.escape(userId); console.log(sql); // SELECT * FROM users WHERE id = 'some user provided value'7 var SqlString = require('sqlstring');6 Điều này trông tương tự như các câu lệnh đã chuẩn bị sẵn trong MySQL, tuy nhiên nó thực sự chỉ sử dụng cùng một phương thức var SqlString = require('sqlstring');8 trong nội bộ Thận trọng Điều này cũng khác với câu lệnh đã chuẩn bị ở chỗ tất cả var SqlString = require('sqlstring');9 đều được thay thế, kể cả những câu có trong chú thích và chuỗi Các loại giá trị khác nhau được thoát khác nhau, đây là cách
Bạn có thể nhận thấy rằng việc thoát này cho phép bạn làm những việc gọn gàng như thế này var SqlString = require('sqlstring');5 Và phương pháp var userId = 1; var sql = SqlString.format('SELECT * FROM users WHERE id = ?', [userId]); console.log(sql); // SELECT * FROM users WHERE id = 18 cho phép bạn tạo các truy vấn phức tạp với các hàm var SqlString = require('sqlstring');7 Để tạo các đối tượng bằng phương thức var userId = 1; var sql = SqlString.format('SELECT * FROM users WHERE id = ?', [userId]); console.log(sql); // SELECT * FROM users WHERE id = 18, có thể sử dụng phương thức var SqlString = require('sqlstring');68. Điều này tạo ra một đối tượng sẽ không được chạm vào khi sử dụng trong trình giữ chỗ var SqlString = require('sqlstring');9, hữu ích cho việc sử dụng các hàm làm giá trị động Thận trọng Chuỗi được cung cấp cho var SqlString = require('sqlstring');68 sẽ bỏ qua tất cả các hàm thoát khi được sử dụng, vì vậy hãy cẩn thận khi chuyển đầu vào chưa được xác thực var SqlString = require('sqlstring');2 Nếu bạn cảm thấy cần thoát truy vấn một mình, bạn cũng có thể trực tiếp sử dụng chức năng thoát var SqlString = require('sqlstring');3 Thoát định danh truy vấnNếu bạn không thể tin tưởng một mã định danh SQL (tên cơ sở dữ liệu/bảng/cột) vì nó được cung cấp bởi người dùng, bạn nên thoát nó bằng var SqlString = require('sqlstring');51 như thế này var SqlString = require('sqlstring');5 Nó cũng hỗ trợ thêm số nhận dạng đủ điều kiện. Nó sẽ thoát khỏi cả hai phần var SqlString = require('sqlstring');0 Nếu bạn không muốn coi var SqlString = require('sqlstring');52 là số nhận dạng đủ điều kiện, bạn có thể đặt đối số thứ hai thành var userId = 1; var sql = SqlString.format('SELECT * FROM users WHERE id = ?', [userId]); console.log(sql); // SELECT * FROM users WHERE id = 10 để giữ chuỗi dưới dạng số nhận dạng theo nghĩa đen var SqlString = require('sqlstring');1 Ngoài ra, bạn có thể sử dụng các ký tự var SqlString = require('sqlstring');54 làm trình giữ chỗ cho số nhận dạng mà bạn muốn thoát như thế này var SqlString = require('sqlstring');2 Xin lưu ý rằng chuỗi ký tự cuối cùng này là chuỗi ký tự thử nghiệm và cú pháp có thể thay đổi Khi bạn chuyển một Đối tượng tới var SqlString = require('sqlstring');55 hoặc var SqlString = require('sqlstring');56, thì var SqlString = require('sqlstring');57 được sử dụng để tránh SQL injection trong các khóa đối tượng Định dạng truy vấnBạn có thể sử dụng var SqlString = require('sqlstring');5 để chuẩn bị truy vấn có nhiều điểm chèn, sử dụng lối thoát thích hợp cho id và giá trị. Một ví dụ đơn giản về điều này sau đây var SqlString = require('sqlstring');3 Sau đó, bạn có một truy vấn thoát, hợp lệ mà sau đó bạn có thể gửi đến cơ sở dữ liệu một cách an toàn. Điều này hữu ích nếu bạn đang tìm cách chuẩn bị truy vấn trước khi thực sự gửi nó đến cơ sở dữ liệu. Bạn cũng có tùy chọn (nhưng không bắt buộc) để chuyển vào var SqlString = require('sqlstring');59 và var SqlString = require('sqlstring');70, cho phép bạn cung cấp phương tiện tùy chỉnh để biến các đối tượng thành chuỗi, cũng như một var SqlString = require('sqlstring');71 theo vị trí/múi giờ cụ thể Điều này có thể được kết hợp thêm với trình trợ giúp var SqlString = require('sqlstring');68 để tạo SQL bao gồm các hàm MySQL dưới dạng giá trị động |