SQLite INJECTION/注入
来源:互联网 发布:数据共享方式 编辑:程序博客网 时间:2024/06/13 13:36
http://www.yiibai.com/sqlite/sqlite_injection.html
如果用户通过网页输入,并将其插入到一个SQLite数据库中,有一个机会,已经离开自己敞开的一个被称为SQL注入的安全问题。这一课将教你如何帮助防止这种情况的发生,并帮助保护脚本和SQLite语句。
注入通常发生在需求用户输入,就像他们的名字,而不是一个名字,他们给一个SQLite语句,会在不知不觉中数据库上运行。
永远不要相信用户提供的数据,仅处理这些数据验证后,作为一项规则,这是通过模式匹配。在下面的例子中,用户名被限制为字母数字字符加下划线和8到20个字符之间的长度 - 需要修改这些规则。
if (preg_match("/^w{8,20}$/", $_GET['username'], $matches)){ $db = new SQLiteDatabase('filename'); $result = @$db->query("SELECT * FROM users WHERE username=$matches[0]");}else{ echo "username not accepted";}
为了证明问题,可以考虑此摘录:
$name ="Qadir'; DELETE FROM users;";
@$db->query("SELECT * FROM users WHERE username='{$name}'");
函数调用应该从用户表“名称”列中由用户指定的名称相匹配的检索记录。正常情况下,名称将只包含字母数字字符,或许空间,如字符串ilia。但在这里,通过追加一个全新的$name查询,调用数据库变成灾难:注入的DELETE查询删除用户的所有记录。
有不允许查询堆叠或一个函数调用执行多个查询的数据库接口。如果尝试到堆叠查询调用失败,但SQLite和PostgreSQL里仍进行堆查询,执行在一个字符串中所有提供的查询,并创建一个严重的安全问题。
防止SQL注入:
可以巧妙地处理所有的转义字符,像Perl和PHP脚本语言。编程语言PHP提供了函数字符串sqlite_escape_string()来转义输入的字符是特殊的SQLite字符。
if (get_magic_quotes_gpc()) { $name = sqlite_escape_string($name);}$result = @$db->query("SELECT * FROM users WHERE username='{$name}'");
虽然编码使得它的安全插入数据,它会呈现简单的文本比较LIKE 子句在查询不能包含二进制数据的列。
请注意,addslashes()不应该被用来引用SQLite 查询字符串,检索数据时,它会导致奇怪的结果。
- SQLite INJECTION/注入
- Code Injection 代码注入
- Dependency Injection 依赖注入
- Injection Attacks-XML注入
- Injection Attacks-Log 注入
- sql injection(sql 注入)
- Dependency Injection 依赖注入
- Dependency Injection 依赖注入
- SQL注入(SQL Injection)
- 注入攻击(Injection Flaws)
- 依赖注入(Dependency Injection)
- EJB---->依赖注入(dependency injection)
- Spring3注入类型(Injection Type)
- Spring 集合注入 [ Collection Injection ]
- RailsCast25 SQL Injection SQL注入
- Command Injection(命令行注入)
- SQL注入(SQL Injection)
- 依赖注入 理解Dependency Injection
- [简单DP] uva12951 Stock Market
- [LeetCode]21. Merge Two Sorted Lists
- TOMCAT性能调优(转载)
- SQL中PIVOT 行列转换
- Linux下用st_mode判断文件类型
- SQLite INJECTION/注入
- 远程服务器数据备份及N天前的数据删除bat
- getMeasuredHeight 和 getHeight
- Android项目开发(4)-忘记密码---验证码验证页面功能实现
- 给UILabel或UIButton添加下滑线
- 【bzoj2258】【文本校对】【splay+hash】
- 实战做项目如何选择开源许可协议(一)-了解协议
- 获得时间戳
- Cookie/Session机制详解