นี่เป็นโลกที่แย่มากเพราะคำถามของคุณบอกเป็นนัยว่าคุณอาจมีช่องโหว่ในการฉีด 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;
--');
อ๊ะมีฐานข้อมูลของคุณอยู่