WebSQL攻击的风险知识
作者 R Nalan 于 2015-09-27, 2:32 - 安全常识 - 永久链接
HTML5引入本地数据库和WebSQL之后,数据库安全的风险也来到了网页和浏览器。
WebSQL的两种风险:(1)SQL注入。(2)XSS漏洞导致数据库内容泄露。
SQL注入
例如,有一个网页 https://example.net/girls?id=1024
。这个网页有一个网址参数id,它是由WebSQL在浏览器本地的数据库中查询内容。
若其SQL为:
SELECT name, age
FROM girls
WHERE id = 1024
攻击者构造一个虚假的输入,将id改为1024 or 1024 = 1024
。这时,其对应的SQL会变为:
SELECT name, age
FROM girls
WHERE id = 1024 or 1024 = 1024
数据库执行这个语句时,会将girls表的所有数据都输出。
XSS与数据库操纵
在有XSS漏洞的情况下,攻击者获取本地数据需要如下几个步骤:
1)获取JavaScript数据库对象
2)获取SQLite上的表结构
3)获取数据表名
4)操作数据
防范方法
1) 检查输入类型,过滤危险字符 2) 使用预处理语句,或参数形式,拒绝拼接字符串。
executeSql("SELECTname FROM stud WHERE id=?“, [input_id]);)
3)谨慎对待每一次SQL操作 4)不要存储重要数据
本地数据库永远透明而不安全,重要的数据必须要存储在服务器上。
5)杜绝XSS漏洞