Suntikan SQL dalam pertanyaan duckdb pada bingkai data panda

WBOY
Lepaskan: 2024-02-09 23:57:03
ke hadapan
1270 orang telah melayarinya

pandas 数据帧上的 duckdb 查询中的 SQL 注入

Kandungan soalan

Dalam projek, saya menggunakan duckdb untuk melaksanakan beberapa pertanyaan pada kerangka data. Untuk salah satu pertanyaan, saya perlu menambah beberapa input pengguna pada pertanyaan. Itulah sebabnya saya ingin tahu sama ada suntikan sql mungkin dalam kes ini. Bolehkah pengguna merosakkan aplikasi atau sistem melalui input? Jika ya, bagaimana saya boleh mengelakkan perkara ini daripada berlaku? Nampaknya duckdb tidak mempunyai pernyataan yang disediakan untuk pertanyaan kerangka data.

Saya telah melihat dalam dokumentasi (https://duckdb.org/docs/api/python/overview.html) tetapi tidak menemui apa-apa yang berguna. Kaedah duckdb.execute(query,parameters) nampaknya hanya berfungsi dengan pangkalan data dengan sambungan sql sebenar, bukan bingkai data.

Terdapat satu lagi soalan mengenai stackoverflow tentang topik ini (sintaks untuk duckdb > python sql dengan parametervariable), tetapi jawapannya hanya berfungsi untuk sambungan sql sebenar, dan versi dengan rentetan f nampaknya tidak selamat kepada saya.

Berikut ialah contoh kod kecil untuk menggambarkan maksud saya:

import duckdb
import pandas as pd

df_data = pd.DataFrame({'id': [1, 2, 3, 4], 'student': ['student_a', 'student_a', 'student_b', 'student_c']})
    
user_input = 3  # fetch some user_input here
    
# How to prevent sql-injection, if its even possible in this case?
result = duckdb.query("SELECT * FROM df_data WHERE id={}".format(user_input))
Salin selepas log masuk

Jadi bagaimana anda akan menyelesaikan masalah ini? Adakah suntikan sql mungkin? Terima kasih atas bantuan anda dan jika anda memerlukan maklumat lanjut sila berasa bebas untuk meminta butiran lanjut!

EDIT: Ralat sintaks dalam kod dibetulkan


Jawapan betul


Nampaknya boleh:

>>> duckdb.execute("""SELECT * FROM df_data WHERE id=?""", (user_input,)).df()

   id    student
0   3  student_b
Salin selepas log masuk

Atas ialah kandungan terperinci Suntikan SQL dalam pertanyaan duckdb pada bingkai data panda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!