![](/img/trans.png)
[英]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.