[英]Ways to prevent SQL Injection Attack & XSS in Java Web Application
[英]how to prevent sql injection attack in android?
所以我在以下代碼上遇到了問題,並且想知道是否還有其他創建和刪除表的方式,其中從用戶那里獲取表名稱時,以下代碼在使用“”單引號時給出了錯誤。 請幫忙
public void droptable(String tablename) {
SQLiteDatabase db =this.getWritableDatabase();
db.execSQL("DROP TABLE IF EXISTS " + tablename);
}
public void createtable(String tablename)
{
SQLiteDatabase db = this.getWritableDatabase();
String query = String.format("CREATE TABLE IF NOT EXISTS %s ( %s INTEGER PRIMARY KEY AUTOINCREMENT , %s TEXT )",tablename,COLUMN0,COLUMN1);
db.execSQL(query);
}
有一個更好的方法嗎?
除非您的應用程序將導出SQLite數據庫本身,並且用戶打算在其他地方使用該SQLite數據庫,否則除非通過您的應用程序,否則該用戶將永遠不會看到此表。
這給您許多選擇:
請勿將用戶輸入的值用作表名。 而是自己生成一個有效的表名,並保留生成的名稱與每個表的用戶輸入“顯示名稱”的映射。
通過刪除不支持的字符,將用戶輸入的值轉換為有效的表名。
將用戶輸入的值括在引號( "%s"
)中,但是如果用戶輸入帶引號的表名,則會遇到問題。
通過拒絕非標准字符作為您的EditText
一部分,防止用戶輸入無效的表名
驗證用戶輸入的值並顯示錯誤對話框(如果鍵入)會導致SQL錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.