sql - 如何清理 C 或 Objective-C 中的数据库输入?

标签 sql objective-c c sqlite sql-injection

我正在使用 Objective-C 创建一个 iPhone 应用程序(如果重要的话),并且我使用 SQLite 存储。我想清理数据库输入以防止用户做类似的事情

Robert'); DROP TABLE Students; --

在 C 或 Objective-C 中执行此操作的最佳方法是什么?


我尝试用 '' 替换 ' 但我确信这还不够。

最佳答案

最好的办法是永远,永远,在任何情况下,即使在那些你只是知道的特殊情况下,这样做会更容易但真的很认真我的意思是这不要通过以下方式构造SQL语句将参数值连接到语句中。使用参数标记并将值绑定(bind)到标记。这是避免 SQL 注入(inject)攻击的方式。其他所有事情都只是浪费时间和精力,因为对于您在用户输入的参数中您想要更改/修改/检查的每 N 件事,都会有人想到 N+1 件事。

分享和享受。

关于sql - 如何清理 C 或 Objective-C 中的数据库输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5503102/

相关文章:

C fork ,返回父进程的 PID 后杀死父进程

c - 多个线程如何拥有相同的线程ID?

mysql - 为 liquibase 中的插入查询定义变更集

iphone - UICollectionView 将自身大小调整 1 个像素

ios - 保存成功,但不可见编辑 plist

iphone - 优化快速重复调用的技巧(Objective-C,iPhone)?

c - 什么是c中的强类型?

mysql - 在MySQL中使用动态SQL(带有查询结果的子查询)

sql - 获取行值之间差异的平均值和标准差

sql - 如何只检查日期时间字段上的时间而忽略日期?