Tôi cần triển khai tìm kiếm nơi người dùng có thể nhập * dưới dạng thẻ hoang dã. Cơ sở dữ liệu mà họ đang tìm kiếm là một máy chủ SQL. Tôi đã nghĩ đến việc chỉ thay thế * bằng một%:Cách sử dụng * làm thẻ hoang dã trong truy vấn SQL an toàn
userInput = userInput.replace('*', '%');
Tôi lo lắng vì tôi đang làm điều này "bằng tay" tôi có thể giới thiệu một số lỗi hoặc lỗ hổng bảo mật. Bạn có thấy có vấn đề gì khi làm như thế này không? Có thư viện nào để làm điều này cho tôi không?
Tôi sử dụng Hibernate làm trình ánh xạ ORM và API tiêu chí để tạo truy vấn nếu nó có câu trả lời.
Nếu bạn đang sử dụng 'like', bạn cũng muốn thoát hiện tại'% ',' _' và '[...]'. Điều này * có thể * là một bản sao của: [Thoát một chuỗi trong SQL Server để nó được an toàn để sử dụng trong biểu thức LIKE] (http://stackoverflow.com/questions/258757/escape-a-string-in-sql- Máy chủ-để-đó-là-an toàn-để-sử dụng-trong-như-biểu hiện) – Kobi
nhưng miễn là bạn đang sử dụng một PreparedStatement, bạn sẽ không gây ra bất kỳ sai sót bảo mật. –
@Kobi Cảm ơn, tôi không biết về _ và []. Phải thử cách những người đó ảnh hưởng đến truy vấn. Hibernate cho phép tôi đặt ký tự Escape để tôi có thể cập nhật câu hỏi này với tôi để cố thoát khỏi những thứ tôi không muốn người dùng sử dụng. – palto