移动互联网安全相关资料

我的一些个人总结

1.web 攻击

    最主要的攻击方式,另起一文详细说明;

其实攻击针对的主要还是服务端,毕竟拿到客户端再多的数据用户也不大;

2.使用不安全的接口

很多接口对外开放权限-导致不需要校验既可以进行查询(爬虫抓数据),甚至是update、delete操作;

对来访的IP做校验,加ip/域名黑白名单。对外部环境设置ip黑名单,对内部环境设置ip/域名白名单;

使用上层服务检测来访请求中的参数信息:B参数、C参数、登录信息、token;

使用不加密的请求参数;

使用https的方式不正确(不理解……);

使用抓包工具/http调试工具,篡改请求;

3.Android/IOS文档目录权限开放

注意不要有开放访问/修改权限的文件;

Android的静态文件中字符串要加密,防止篡改;

对发出的请求做校验,只可以发出指定域名的请求(Android、IOS有现成的方法,可以在官网上查到);

本地文件(Share Preferences等)/数据库中尽量不存储数据,存储数据时必须加密;

4. Android root、IOS 越狱提升权限拿到隐私数据

检测如果是root权限或者已经越狱的话,禁止启动;

注意,有些第三方工具可以hook检测越狱或者root的方法;

5.SO文件、dex文件逆向

重要的代码存在SO中;

加壳,使用第三方加壳工具;

代码混淆(聊胜于无);

6.使用过时的加密方式

过时的MD4、MD5等等等等,记不住了,网上解密的工具已经很成熟(CMD5)

不要自己定义一个新的加密规则(本地可破解)

推荐3DES、RSA(客户端支付常使用),还有一种忘了……

7.不安全的登录信息

登录信息保持过长(也得看业务要求,维持个折中的方案)

验证码失效时间过长、验证码保持有效性的bug

8.接口和网站链接命名不好,攻击者直接暴力撞号\撞库

更改链接命名

    校验来访IP,自动加入(临时)黑名单

9.用户跳过身份验证

beta测试时,注意设计这方面的测试用例;

使用工具adb直接调用activity,测试人员在beta测试中设计相关测试用例(不仅如此,使用adb直接调起activity后,可以自己设置参数发起特殊的请求进行SQL注入等攻击);

10.将测试中的调试信息打印到logcat

严格控制测试、调试信息发到线上,调试入口在发布时必须关闭;

限制日志的级别,测试人员必须注意

来自为知笔记(Wiz)

时间: 2024-10-18 15:29:09

移动互联网安全相关资料的相关文章

Web安全相关资料

Asp.net安全架构: http://www.cnblogs.com/luminji/category/381486.html

互联网支付系统整体架构详解(转)

在互联网产品运营中,有很多小伙伴或许会遇到这样的困扰:产品好不容易推出来了,流量成本节节攀升,用户的活跃度.留存度却持续下降. 因此在瞬息万变的互联网产品环境中,需要研发接入支付系统来加入商业行为的闭环,支付系统能够帮助企业更好地实现商业化,利用那些为用户而生的支付体系产品,实现用户积累.商业变现. 对于支付系统,有针对不同行业的支付系统,有支付宝,微信支付,paypal的通用网关支付,也有聚合了不同网关的聚合系统. 不论你是对支付行业感兴趣,亦或自己研发支付系统,本篇内容会对你有价值. 从产品

老司机心路历程

本人1984年10月出生在湘潭一农村,03-06年就读于长沙一职业技术学院,学习软件工程专业.对于为什么选择这个专业,我不知道,是亲戚帮我选的,我当时一脸懵逼啥都不知道,由于连上大学学费都是父母借款,所以大学毕业后不能从家里要一分钱:还好,我在大学三年利用二手电脑买卖,最后挣了一台二手的台式机电脑,毕业后卖了1千多块钱.拿着这1千多块就出发北京. 06年4月出发北京前,已经在招聘网站投了很多简历,留下了几家公司的面试邀请.199元的长沙到北京的硬座,第二天上午10点多到达北京西站.下火了火车直奔

多态动手动脑

一.怎样判断对象是否可以转换?可以使用instanceof运算符判断一个对象是否可以转换为指定的类型,参看实例: TestInstanceof.java public class TestInstanceof { public static void main(String[] args) { //声明hello时使用Object类,则hello的编译类型是Object,Object是所有类的父类 //但hello变量的实际类型是String Object hello = "Hello"

多态性动手动脑

一.多态模拟ATM import java.util.*; public class Test { @SuppressWarnings("resource") public static void main(String[] args) {  Scanner in=new Scanner(System.in);  ATM atm=new ATM();  int choose=0,num=0;  String pw="";  next:while(true){   S

02-JAVA语法基础

[动手动脑] 仔细阅读示例: public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t); // //是原始数据类型吗? System.out.println(s.getClass().isPrimitive()); //从字符串中转换 Size u=Size.valueOf

动手动脑加总结

一.编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果. package jisuan; import javax.swing.JOptionPane; public class jisuan { public static void main(String[] args) { // TODO 自动生成的方法存根 String firstNumber,   // first string entered by user secondNumber;  // second stri

java作业2

(一) 仔细阅读示例: EnumTest.java,运行它,分析运行结果? 你能得到什么结论?你掌握了枚举类型的基本用法了吗? 结论:枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象.相同的值则引用同一个对象. (二) 1. 原码 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制: [+1]原 = 0000 0001 [-1]原 = 1000 0001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是: [1111 11

基于git的软件开发中并行工程管理以及版本控制系统概要

并行工程师什么,这里就不再解释(不懂请百度),实际上,在软件开发过程中,涉及到多人合作的以项目小组形式完成开发的软件(这里指广义上)或多或少都使用了并行工程的概念,在正式的项目开发中,项目小组成员总是分工合作每人完成一部分,然后再合并起来,而且,在实际应用中,尽管使用的是瀑布模型完成开发,但总是所有项目小组成员同时开始完成自己的部分,这,其实已经是并行工程了,我们可以自豪的宣布:我们在开发过程中使用了并行 工程这种高大上的玩意来提高开发速度,所以,老板你得给我们涨工资! 很简单吧,看起来好简单的