为了账号安全,请及时绑定邮箱和手机立即绑定

如何防止android中的sql注入攻击?

如何防止android中的sql注入攻击?

互换的青春 2021-08-25 17:35:56
所以我在使用以下代码时遇到问题,想知道是否还有其他方法可以创建和删除表,其中表名取自用户,以下代码在使用“'”单引号时出错。请帮忙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);}有一个更好的方法吗?
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

除非您的应用程序将导出 SQLite 数据库本身,并且用户打算在其他地方使用该 SQLite 数据库,否则用户将永远不会看到此表,除非通过您的应用程序。

这为您提供了多种选择:

  1. 不要使用用户输入的值作为表名。相反,自己生成一个有效的表名,并保留生成的名称和用户输入的每个表的“显示名称”的映射。

  2. 通过删除不受支持的字符,将用户输入的值转换为有效的表名。

  3. 将用户输入的值括在引号 ( "%s") 中,但如果用户输入带引号的表名,则会出现问题。

  4. 通过拒绝非标准字符作为您的一部分,防止用户输入无效的表名 EditText

  5. 验证用户输入的值并在他们输入会导致 SQL 错误的内容时显示错误对话框


查看完整回答
反对 回复 2021-08-25
  • 1 回答
  • 0 关注
  • 276 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信