นี่เป็นโลกที่แย่มากเพราะคำถามของคุณบอกเป็นนัยว่าคุณอาจมีช่องโหว่ในการฉีด SQLในแอปพลิเคชันของคุณ
คุณควรใช้คำสั่งที่กำหนดพารามิเตอร์ สำหรับ Java, ใช้กับตัวยึดPreparedStatement
คุณบอกว่าคุณไม่ต้องการใช้ข้อความที่มีพารามิเตอร์ แต่คุณไม่ได้อธิบายว่าทำไมและตรงไปตรงมามันต้องมีเหตุผลที่ดีมากที่จะไม่ใช้มันเพราะมันเป็นวิธีที่ง่ายและปลอดภัยที่สุดในการแก้ไขปัญหาที่คุณพยายาม เพื่อแก้ปัญหา
ดูการป้องกัน SQL Injection ในชวา อย่าตกเป็นเหยื่อคนต่อไปของบ๊อบบี้
ไม่มีฟังก์ชั่นสาธารณะใน PgJDBC สำหรับการอ้างอิงสตริงและการหลบหนี ส่วนหนึ่งเป็นเพราะอาจทำให้ดูเหมือนเป็นความคิดที่ดี
มีอยู่ในตัว quoting ฟังก์ชั่นquote_literal
และquote_ident
ใน PostgreSQL แต่พวกเขาสำหรับฟังก์ชั่นการใช้งานPL/PgSQL
EXECUTE
วันนี้quote_literal
ไม่มีจำหน่ายแล้วโดยส่วนใหญ่EXECUTE ... USING
ซึ่งเป็นรุ่น parameterisedเพราะมันปลอดภัยมากขึ้นและง่ายขึ้น คุณไม่สามารถใช้เพื่อจุดประสงค์ที่คุณอธิบายได้ที่นี่เนื่องจากเป็นฟังก์ชันฝั่งเซิร์ฟเวอร์
ลองจินตนาการว่าจะเกิดอะไรขึ้นถ้าคุณได้รับคุณค่า');DROP SCHEMA public;--
จากผู้ใช้ที่เป็นอันตราย คุณจะผลิต:
insert into test values (1,'');DROP SCHEMA public;--');
ซึ่งแบ่งออกเป็นสองข้อความและความคิดเห็นที่ถูกละเว้น:
insert into test values (1,'');
DROP SCHEMA public;
--');
อ๊ะมีฐานข้อมูลของคุณอยู่