首頁 >後端開發 >Python教學 >如何在 SQLite 中安全地建立動態表?

如何在 SQLite 中安全地建立動態表?

Susan Sarandon
Susan Sarandon原創
2024-11-09 12:45:02980瀏覽

How to Create Dynamic Tables in SQLite Safely?

SQLite 中的動態表建立

在資料庫管理中,靈活性和效率至關重要。使用 SQLite 時,出現了問題:是否可以使用變數表名而不借助字串建構子(這種做法容易受到 SQL 注入攻擊)?

在這種情況下,目標是為中的每個星建立一個表星星模擬。每張桌子都應該根據明星的名字來命名。最初,該方法涉及使用字串建構函數:

cursor.execute("CREATE TABLE StarFrame"+self.name+" (etc etc)")

但是,這並不理想。為了解決這個問題,可以考慮使用參數:

cursor.execute("CREATE TABLE StarFrame(?) (etc etc)",self.name)

不幸的是,表格不能作為參數替換的目標。因此,這種方法是不可行的。

相反,為了確保防止注入攻擊,可以使用清理功能。此函數過濾掉特殊字元並確保表名稱僅包含字母數字字元:

def scrub(table_name):
    return ''.join( chr for chr in table_name if chr.isalnum() )

table_name = scrub(self.name)
cursor.execute(f"CREATE TABLE StarFrame{table_name} (etc etc)")

此方法允許動態建立表,同時防範安全威脅。透過消除潛在的注入向量,它可以維護資料庫的完整性並防止惡意行為者利用應用程式。

以上是如何在 SQLite 中安全地建立動態表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn