前端安全-CSRF攻击,sql注入,点击劫持
前言
随着官方对于用户隐私和数据使用上越来越严格,如何保护用户的信息也成为我们日常开发中需要关注的问题。下面给大家分享几个常见的点。
避免在设备上存储敏感信息
当我们需要在用户的设备上存储信息时:
注意这两类数据:* 应用的密钥等私有数据* 用户的敏感信息
不要共享未加密的敏感信息。如果需要存储,最好是先进行加密。在被破解的设备上,数据库什么的都能被读取。
当我们需要存储密钥类的数据时(例如密码管理App),用keystore或keychains的加密。
虽然说最好是不要在本地存储用户敏感信息,但有时无法避免。那我们有哪些办法能加强安全性呢?
对于小的数据,现在有官方的 EncryptedSharedPreferences 来对内容加密。使用如下:
String masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC);SharedPreferences sharedPreferences = EncryptedSharedPreferences.create("secret_shared_prefs",masterKeyAlias,context,EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);// 当作普通的SP用就可以了
SharedPreferences.Editor editor = sharedPreferences.edit();
对于数据流,可以用CipherInputStream和CipherOutputStream。他们可以用来封装普通的数据流,这样加解密的过程对于使用者来说就是“隐形”的。下面看看具体的例子:
// 初始化Cipher
final Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, key);// 封装加密数据流
OutputStream wrapped = new CipherOutputStream(out, cipher);
CipherInputStream的使用也类似。
注意系统自动备份
大家应该在manifest.xml里看到过allowBackup这个设置。它有什么作用呢?看看官方文档的原话:
是否允许应用参与备份和恢复基础架构。如果将此属性设为 false,则永远不会为该应用执行备份或恢复,即使是采用全系统备份方法也不例外(这种备份方法通常会通过 adb 保存所有应用数据)。此属性的默认值为 true。
就是说在默认情况下,应用会允许第三方将应用的词有存储进行转移。这种设计的本意可能是为了方便用户备份自己的设备。但是黑客会怎样利用这个呢?在一个解锁了的设备上,他们可以轻易地把数据从应用的私有存储复制到外面来窃取信息。
解决办法当然就是把它设为allowBackup="false"。这样可以保证用户的数据不会被转移到读取权限更低的地方。
注意:从 Android 6.0 起,allowBackup 也会影响系统自动备份功能上传数据至Google Drive(类似于 iCloud)。
如果要使用系统的自动备份功能,需要在 Google Drive 账户的fullBackupContent设置里声明可以被备份的文件列表。
使用 secure flag
不知道大家有没有注意过,有些应用当你在输入支付信息(例如银行卡号)时,没法截屏。很大可能是因为他们的应用启用了LayoutParams.FLAG_SECURE,作用就是其他应用无法对此应用截屏或录像。当这类应用显示在任务栏内时,会默认显示空白页面而不是当前内容的截图。
简单的实现如下:
class MainActivity : AppCompatActivity() {...override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)}...
}
从Android 5.0起,第三方应用只可以收集没有这个设置的应用的内容。想象一个场景,我们在应用A输入支付信息时,切去应用B发了条消息,如果应用A没有做这个设置,某些应用就可以偷偷截屏保存我们的支付信息。当然现在很多支付都有加强的验证,比如短信验证码。但是这类信息泄漏的话,还是会让人防不胜防。
总结
虽然我们日常开发不会天天接触到这些(就像CI/CD的设置),但是当我们实现了新功能需要发布时,对信息的安全性做一些检查,既是对用户负责,说不定也给自己和公司免去一些潜在的麻烦。
前端安全-CSRF攻击,sql注入,点击劫持相关推荐
- 万字讲解9种Web应用攻击与防护安全。XSS、CSRF、SQL注入等是如何实现的
OWASP(开放Web软体安全项目- Open Web Application Security Project) 是一个开源的.非盈利的全球性安全组织,致力于应用软件的安全研究.使命 是使应用软件更 ...
- android 访问服务器sql_XSS 攻击、CSRF 攻击、SQL 注入、流量劫持(DNS 劫持、HTTP 劫持)—— 浏览器安全
今天看了 jsliang 大佬关于网络安全的文章,为了加深一下印象,自己动手写一下. 主要参考文章:网络安全 --- jsliang XSS攻击 XSS(Cross Site Script)跨站脚本攻 ...
- 网络(14)-Web站点如何防范XSS、CSRF、SQL注入攻击?
一.XSS跨站脚本攻击 XSS跨站脚本攻击指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie ...
- 常见web攻击(sql注入,xss攻击,csrf攻击)
sql注入攻击 危害 方式:通过表单提交加入特殊字符 如:' OR 1=1#' 防范:用django的ORM,就大可不必考虑这个问题, 如果自己写,要用正则和其他方式进行过滤 xss(Cross ...
- CSRF, XSS, Sql注入原理和处理方案
CSRF 含义 CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写 ...
- 注入攻击-SQL注入和代码注入
注入攻击 OWASP将注入攻击和跨站脚本攻击(XSS)列入网络应用程序十大常见安全风险.实际上,它们会一起出现,因为 XSS 攻击依赖于注入攻击的成功.虽然这是最明显的组合关系,但是注入攻击带来的不仅 ...
- 前端参数效验防止sql注入的方法
最近做完项目时,甲方对系统有要过安全等保三级的要求,这里针对我所编写的模块遇到的前端代码扫描出现的sql注入问题,给出部分解决方案. 错误示例 请求api时,参数未加效验: let _obj ={pa ...
- SQL注入攻击(SQL注入(SQLi)攻击)-报错注入
页面没有显示位 , 但有数据库的报错信息时 , 可使用报错注入 报错注入是最常用的注入方式 , 也是使用起来最方便(我觉得)的一种注入方式 updatexml(1,'~',3); 第二个参数包含特殊字 ...
- 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击...
第三百九十二节,Django+Xadmin打造上线标准的在线教育平台-sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...
最新文章
- linux snmp更改端口号,snmpd服务无法更改默认端口
- Android 聊天软件客户端
- .NET Core中文分词组件jieba.NET Core
- margin的简单应用
- refreshtoken用mysql_微信access_token和refresh_token保存于redis
- iPhone X Web 设计
- python getattr函数_Python中的getattr()函数详解
- java 条件 等待_java – 如何唤醒等待相同条件的所有线程?
- linux 内存查看_Linux终端查看最消耗CPU内存的进程
- HPUX11.31环境下,更换HBA卡后的配置操作(HP-UX)
- linux脚本中如何调用函数,在Linux中如何在Perl脚本中调用函数(在shell脚本中定义)...
- 2008 Asia Harbin Regional Contest Online Turn the corner (三分)
- 群晖NAS教程(十五)、利用Web Station安装typecho博客
- excel软件php函数,文员常用的excel函数
- 一文读懂AB测试原理及样本量计算的Python实现
- CentOS7安装Pure-ftpd
- 第4章-模板引擎Jade和Handlebars-4.2.Jade的语法和特性
- 集合类 Java中的集合类解析和一些有深入的面试题
- HCIE-Routing Switching V3.0模拟试题.docx
- 【原创】软件测试经验图谱硬技能之业务逻辑
热门文章
- 20201020 泰克示波器改时间
- Python+selenium+chromedriver实现自动登录微博并发微博
- 用python爬取有道翻译遇到反爬,3分钟反反爬绕过其反爬
- 从一个用户expdp导出再impdp导入到另一个用户
- 数据库连接,上手零基础
- 外贸学会钓鱼的方法,才会明白报价的道理
- 关于JAVA POI解析WPS docx文档中的table(复杂表格包含单元格横向,纵向的合并)
- linux系统RootKit木马查杀
- c语言cgi json,CGI程序学习(4)-C程序中JSON解析
- 学习ALINX_ZYNQ(7Z020开发板SDK)第二天——RS485串口