[英]Storing a MySQL query in a MySQL database… Bad Idea?
我有一個用戶可以購買虛擬物品的商店,例如一次加電和用戶帳戶的永久性更改。 這些購買可能會改變不同表中的不同字段,並且存在大量項目的可能性,因此每次我想添加新產品時,我都不想為PHP文件編寫新的添加內容。
我正在考慮將查詢作為字符串保存到MySQL數據庫中,然后當購買項目時,我可以從數據庫中獲取字符串並像這樣運行它。
例如:一個表items
將包含一個字段query_to_run
,它將包含字符串UPDATE power_ups SET test = test WHERE test = 1
將在用戶購買項目時運行。
這是用過的還是有更好的方法來做到這一點?
在您的數據庫中存儲查詢可能比您想象的更安全。 如果插入查詢的唯一方法是通過您自己的代碼,那么您將不會真正面臨注入攻擊的風險(假設您自己編寫了所有代碼並且您沒有包含令人討厭的內容,其中ID = $ POST [ ...] 在他們中。
因此,就此而言,是的,將SQL保存在數據庫中是安全的。
雖然這是但是 。
但是,我認為你寫一個簡單的對象來處理這些類型的請求會好得多。 您可以非常輕松地創建一個安全可靠的對象,該對象獲取UserID並將其在查詢中發送到數據庫 - 無需在數據庫中存儲任何SQL(似乎唯一要改變的是用戶ID例?
我寧願你通過PHP來做,因為它更有效,更不容易受到攻擊。
您當前的方法根本不靈活 。 例如,當您添加新項目時,是否還要添加新表格以存儲有關剛剛添加的新項目的信息? 如果你有10k個不同的項目,你打算創建10k個不同的表嗎? 這種方法還有其他幾個問題。
您應該查看關系數據庫設計的基礎知識,以創建一個充分利用關系數據庫的設計。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.