来自于道格拉斯·克罗克福德(Douglas Crockford)教授Javascript的背景,他非常重视不使用eval,以及使用像exec这样构成安全漏洞的一般毯子方法的教育背景,无论如何都是删除一个SQLite表,如果它存在而不必诉诸execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE)
? current method documentation似乎表明execSQL是唯一的方法,因为唯一的删除方法是:
删除数据库中行的便捷方法。
和deleteDatabase用于数据库,而不是表。
答案 0 :(得分:2)
要执行DROP TABLE IF EXISTS,请使用execSQL
。
这不是JavaScript,eval
可以在JavaScript中执行JavaScript语句。
SQL是一种与Java不同的语言,因此构造SQL字符串是执行SQL的唯一方法。
除非攻击者能够控制DATABASE_TABLE
符号的内容,否则没有安全漏洞。
如果execSQL
函数对您来说过于通用,请创建一个dropTableIfExists
辅助函数,为您格式化字符串(以及quotes the identifier正确)。