自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 资源 (2)
  • 收藏
  • 关注

原创 PHP反序列化

序列化就是将对象转换成字符串,反序列化则相反,数据的格式转换对象的序列化利于对象的保存和传输,也可以让多个文件共享对象。PHP反序列化原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,导致代码致谢,SQL注入,目录遍历等不可控后果,在反序列化过程中自动触发了某些魔术方法,当进行反序列化的时候就有可能触发对象中的一些魔术方法。serialize():将一个对象转换成字符串unserialize():将字符串还原成一个对象触发:unserialize函数的变量可控,文件中存在可

2022-05-02 10:57:56 403

原创 Web-XSS漏洞

XSS攻击(跨站脚本攻击)是指攻击者利用网站程序对用户输入过滤不足的缺陷,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。XSS攻击主要影响的是用户端的安全,包含用户信息安全、权限安全等。并且多数XSS攻击都依赖于JavaScript脚本开展。核心要求是构造出能够让前端执行的JS代码,让攻击者的JS代码在受害者浏览器上执行,攻击系统用户而不是系统本身。JS运行条件:代码位于< script >标签中、代

2022-05-01 22:24:31 1050

原创 逻辑越权——垂直、水平越权

水平越权:通过更换的某个ID之类的身份标识,从而使A账号获取(修改、删除等)B账号数据。垂直越权:使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限的操作。未授权访问:通过删除请求中认证信息后重放该请求,依旧可以访问或者完成操作。垂直越权利用:添加用户前提条件:获取添加用户的数据包普通用户前端有操作页面可以抓取数据包通过网站源码本地搭建自己去模拟抓取盲猜原理:前端安全造成:界面判断用户等级后,代码界面部分进行可选显示。或只是判断是否登录,并没有验证级别,所以存在越权问题

2022-04-30 13:46:24 4072

原创 文件包含攻击

文件包含:将本地可复用的文件利用包含函数在当前页面中执行。(将文件以脚本执行)如果某个页码具有这种功能,并且在这个包含的过程中,被包含的函数名可通过参数的方式被用户端控制,那么就可能存在文件包含漏洞。文件包含漏洞指当PHP函数引入文件时,没有合理校验传入的文件名,从而操作了预想之外的文件,导致以外的文件泄露甚至恶意的代码注入。在PHP环境下,可利用include、require、include_once、require_once函数调用文件,实现文件包含的效果。漏洞原理其原理就职注入一段用户能控制

2022-04-29 18:05:42 3370

原创 命令执行攻击与防御

命令执行漏洞效果类似包含攻击,主要时由于输入的参数被当成命令来执行。远程命令执行漏洞如果目标站点在设计时其过滤功能不严格或数据与代码区分不明显,及其导致命令执行漏洞的存在。利用系统函数实现远程命令执行在PHP下,允许远程命令执行的函数有eval(),assert(),preg_replace()等,如果页面上存在上述函数且参数可被用户控制,同时没有对参数进行有效过滤,那么就可能存在远程命令执行漏洞。...

2022-04-28 23:49:17 2341

原创 请求伪造漏洞与防护

文章目录CSRF攻击CSRF漏洞利用场景针对CSRF的防护方案CSRF漏洞总结SSRFSSRF漏洞利用场景针对SSRF的防护方案SSRF漏洞总结CSRF和SSRF的主要区别在于伪造的身份不同。CSRF攻击跨站请求伪造CSRF完全不同与XSS攻击。XSS攻击侧重于获取用户的权限及信息,而CSRF则是攻击者可伪造当前用户的行为,让目标用户误以为请求由当前用户发起,并利用当前用户权限实现业务请求伪造。CSRF侧重于伪造特定用户的请求。CSRF攻击的效果是在当前用户不值钱的轻快下,以当前用户的身份发送业务

2022-04-26 16:24:59 507

原创 upload-labs通关攻略

文章目录Pass-01Pass-02Pass-03Pass-06Pass-07Pass-08Pass-09Pass-10Pass-11Pass-01查看第一关源代码,该关卡设置白名单定义文件类型为图片类型,其他类型不予通过。function checkFile() { var file = document.getElementsByName('upload_file')[0].value; if (file == null || file == "") { alert

2022-03-06 23:37:00 882

原创 业务逻辑安全风险存在的前提

业务逻辑实现的前提是:要区分每个用户,针对每个用户提供独立的服务内容,并且允许客户与服务器进行交互。做出有效的权限划分。针对Web应用的攻击就是一个从零权限到最高权限的过程。攻击者的核心目标就是通过各种手段提升自己的权限,权限越大,对后续的攻击越有帮助。假设网站对权限管理不足,就会造成平行越权的情况,平行越权会给网站造成极大隐患。权限管理作为网站用户进行分级管理的核心手段,直接决定了该网站用户、管理员的安全以及网站自身的安全程度。近年来,针对网络逻辑问题的攻击呈爆发式增长,核心问题式对权限的逻辑进

2022-02-28 21:54:46 175

原创 Web—文件上传

文章目录一、文件上传1、上传攻击的原理一、文件上传概念:文件上传攻击是指攻击者利用Web应用对上传文件过滤不严的漏洞,将应用程序定义类型范围之外的文件上传到Web服务器,并且此类文件通常为木马,在上传成功后攻击者即可获得当前文件的webshell。攻击者的目标是取得当前Web服务器的权限,如果通过Web层面展开攻击,那必须将攻击者的木马插入到Web系统中,并在服务器端执行,这个过程就是对Web服务器进行文件注入攻击。1、上传攻击的原理...

2022-02-25 16:05:25 4984

原创 web—暴力破解

暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的

2022-02-15 16:25:47 4850

原创 web—信息搜集

文章目录信息搜集一、 域名信息1. Whois查询1.1 查询网站1.2 kali工具2. 备案信息查询二、子域名信息1. ip查询2. 网站查询3. 工具扫描三、端口信息1. 插件检测2. 工具扫描2.1 nmap2.2 masscan2.3 御剑端口扫描四、C段和旁站1. 旁站2. C段3. 在线查询网站五、目录信息六、指纹识别1.识别方式2. 指纹识别的对象3. 识别工具4. CDN识别信息搜集一、 域名信息1. Whois查询whois指的是域名注册时留下的信息,比如留下管理员的名字、电话号

2022-02-13 14:23:36 3524 1

原创 数据结构—线性表

文章目录线性表一、顺序表1. 顺序表的操作(1)将一个线性表置为空表(2)判断当前线性表是否为空表(3)获取线性表的长度(4)获取指定位置的元素(5)根据参数newSize,重置数组的大小(6)向线性表结尾添加元素t(7)向i位置插入元素(8)删除并返回线性表中第i个数据元素(10)线性表遍历2. 一些测试线性表一个线性表是n个具有相同特性的数据元素的有限序列前驱元素:若A元素在B元素的前面,则称A为B的前驱元素后继元素:若B元素在A元素的后面,则称B为A的后继元素**线性表的特征:**数据之

2022-02-04 20:23:50 1550

原创 数据结构—排序

一、Comparable接口介绍Java提供了一个接口comparable用来定义排序规则,实现对对象的排序。需求:定义一个学生类Student,具有年龄age和姓名name两个属性,并通过Comparable接口提供比较规则。定义测试类,在测试类中定义测试方法Comparable getMax(Comparable c1,Comparable c2)完成测试。class Student implements Comparable<Student>{ private int ag

2022-02-02 13:46:36 1984

原创 Android导入已有Sqlite数据库

在res文件夹下创建文件夹raw,在raw中放入要导入的sqlite数据库创建java类命名为DBManager,编写以下代码:public class DBManager { private final int BUFFER_SIZE = 400000; //缓存大小 public static final String DB_NAME = "wisdom.db"; //保存的数据库文件名 public static final String PACKAGE_NAME = "

2022-01-18 21:15:19 3132 1

原创 Android记事本2.0-使用litepal操作数据库实现

文章目录一、登录注册功能的实现1. 实现注册功能2. 实现登录功能3. 密码可见与不可见的实现二、使用SQLite实现记录的增删改查1. 添加记录2. 修改记录3. 查询记录4. 删除记录三、侧滑菜单栏功能的实现1. 自定义View实现侧滑显示菜单栏2. 菜单栏功能实现2.1 使用功ArrayAdapter显示功能2.2 删除所有记录功能实现2.3 实现注销账号功能一、登录注册功能的实现1. 实现注册功能对输入的信息进行验证,其中包括各项信息不能为空、密码和确认密码是否相同。然后通过litepal提交

2022-01-06 18:03:29 2614 1

原创 使用LitePal建立表关联、使用LitePal聚合函数

文章目录一、四张表简介二、代码实现1. 创建独立的四个类2. 建立关联2.1 一对一关系2.2 多对一关系2.2 多对多关系3. 添加映射三、验证前篇:使用LitePal操作数据库详细介绍参考:Android数据库高手秘籍(四)——使用LitePal建立表关联一、四张表简介News表:标题title、内容content、发布时间publishDate、评论数commentCount、id;Comment表:内容content、发布时间publishDate、id;Introduc

2022-01-04 22:12:01 1504

原创 IPC机制(1)IPC基础概念介绍、多进程模式

文章目录一、Android IPC简介二、Android中的多进程模式1. 开启多进程模式2. 多进程模式的运行机制三、IPC基础概念介绍1. Serializable接口2. Parcelable接口3. Binder一、Android IPC简介IPC含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程线程是CPU调度的最小单元,同时线程是一种有限的系统资源,而进程一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。一个进程可以包含多个线程,因此进程和线程是包含与被包含的关

2021-12-03 21:44:19 1717

原创 Activity生命周期和启动模式

Activity生命周期和启动模式1. 典型情况下的生命周期分析完整生存期:onCreate()-onDestory(),分别标识着Activity的创建和销毁,并且只可能有一次调用。可见生存期:onStart()-onStop(),随着用户的操作或者设备屏幕的点亮和熄灭,这两个方法可能被调用多次。前台生存期:onResume()-onPause(),随着用户操作或者设备屏幕的点亮和熄灭,这两个方法可能被调用多次。当用户按下back键回退时,回调如下:onPause()-onSto

2021-12-02 14:48:42 1846

原创 使用Http协议访问网络

文章目录1. 使用HttpURLConnection2. 使用OkHttp3. 数据显示4. 解析xml格式数据5. 解析json格式数据首先修改清单文件,使得可以访问http网络//在清单文件中修改代码 <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:usesCleartextTraffic

2021-11-29 15:01:55 513

原创 HttpUrl类:通用网络操作工具类

public class HttpUtil { /* 该方法使用HttpURLConnection方法访问网络 给sendHttpRequest方法添加一个HttpCallBackListener参数,并在方法内部开启子线程在子线程中去执行具体的网络操作 */ public static void sendHttpRequest(String address,final HttpCallBackListener listener) { new Thr

2021-11-27 15:03:01 2853

原创 通知栏Notification通知的使用

文章目录基本用法通知点击效果实现进阶技巧:Notification.Builder的常用API(1)在通知发出的时候播放一段音频(2)在通知发出时振动(3)控制手机LED灯的显示(4) 使用默认效果Notification.Builder API的高级功能(1) setStyle()(2)setPriority()基本用法@RequiresApi(api = Build.VERSION_CODES.O)public void notification(View view) { //生成chan

2021-11-25 16:18:10 592

原创 使用LitePal操作数据库

文章目录使用LitePal操作数据库1. 配置LitePal2. 创建和升级数据库3. 使用LitePal对数据进行增删改查添加数据修改数据删除数据查询数据使用LitePal操作数据库1. 配置LitePal在app/build.gradle文件中添加如下内容:dependencies { implementation 'org.litepal.android:core:1.3.2'}接下来配置litepal.xml文件,创建一个assets目录,创建位置如下:在assets目录下

2021-11-24 15:38:13 2652

原创 在活动中使用Menu

首先在res目录下新建一个menu文件夹,右击res-new-directory,输入menu文件夹名,之后右击menu-new-menu resource file。输入文件名main,点击ok完成创建。然后在文件main.xml中输入代码<!--这里表示创建了三个菜单项:add、remove、set。--><item android:id="@+id/add_item" android:title="add"></item><item andro

2021-11-19 16:19:15 1272

原创 下拉框Spinner

重要属性和方法属性android:dropDownVerticalOffset:设置竖直偏移量android:dropDownHorizontalOffset:设置水平偏移量android:spinnerMode:设置下拉框的显示模式方法setPrompt():设置选项顶部提示文字setAdapter():设置适配器setSelection():设置当前默认选项定义下拉框 <Spinner android:id="@+id/spinner"

2021-11-16 20:07:06 1496

原创 Calendar类、自定义实现日历控件

文章目录自定义实现日历控件1. Calendar类2. 布局3. 业务处理3. 定制UI4. 事件监听自定义实现日历控件1. Calendar类2. 布局创建calendar_layout.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:padding="20sp" android:orientation="vertical" android:lay

2021-11-13 22:31:08 1784

原创 生成和扫描二维码(ZXing库)

生成和扫描二维码(ZXing库)一、ZXing概述ZXing是谷歌自己推出的一个开源源码的二维码框架,可以实现使用手机的摄像头完成条形码的扫描和解码。二、整合ZXing框架将预先获取的core-3.4.0.jar包复制到工程的app\libs目录,刷新,然后添加依赖集成java源码,将demo工程QrScan中app\src\main\java目录下包中的zxing和util复制到本工程对应的app\src\main\java的包下然后修改package包名,修改import路径,修

2021-11-03 16:46:50 2334

原创 Android多线程异步通信实例

创建两个线程,实现两个相同的耗时任务实现2个窗口同时卖火车票;每个窗口卖100张,卖票速度都是1s/张,最后弹出通知票已卖完。public class MainActivity extends AppCompatActivity { private Button button2; private Handler handler=new Handler(){ @Override public void handleMessage(@NonNull Messa

2021-10-12 14:44:52 175

原创 总结三种方法使用Service实现在后台播放音乐、暂停音乐、停止音乐的功能

文章目录通过startService()方式开启通过bindService开启使用bindService+AIDL开启通过startService()方式开启public class MyService extends Service { private MediaPlayer mediaPlayer; private int startId; public enum Control{ PLAY,PAUSE,STOP } public MySer

2021-10-05 14:49:48 1183

原创 智能聊天机器人

文章目录一、搭建界面布局1. 搭建主界面布局2. 搭建聊天条目布局二、实现智能机器人通信1. 封装聊天实体类2. 设置机器人的欢迎信息3. 编写聊天列表适配器4. 编写页面交互代码三、关于okhttp3网络框架的onfailure错误一、搭建界面布局1. 搭建主界面布局编写activity_main.xml,父布局使用LinearLayout。<TextView android:id="@+id/tvTitle" android:gravity="center" and

2021-09-25 17:50:11 407

原创 天气预报app

文章目录一、在Java代码中初始化界面二、子线程中开启网络请求三、网络请求返回Json数据解析四、界面呈现1. 获取天气数据并展示2. 根据天气情况显示对应图片3. 显示逐小时天气情况4. 点击事件监听器五、数据库创建和功能实现六、城市管理界面功能实现1. listView适配器配置4. 控件监听事件七、添加城市界面功能实现1. 适配器配置、通过省会添加城市功能实现4. 通过搜索添加城市功能实现5. 通过广播接收城市信息更新消息一、在Java代码中初始化界面在MainActivity中初始化ViewPa

2021-09-21 16:48:21 1151 1

原创 使用广播发送通知使界面数据更新

发送广播Intent intent=new Intent("UPDATE");sendBroadcast(intent);接收广播 myReceiver=new MyReceiver(); IntentFilter intentFilter=new IntentFilter(); intentFilter.addAction("UPDATE"); registerReceiver(myReceiver,intentFilter);

2021-09-21 16:36:48 157

原创 链接网络获取数据的方法

传入url地址 public static String doGet(String urlString){ String result=""; String line; StringBuilder stringBuilder=null; BufferedReader bufferedReader=null; //连接网络 HttpURLConnection connection=null;

2021-09-21 16:31:56 501

原创 通过ContentResolver查询其他程序数据的步骤

通过pause()方法解析Uri首先通过Uri的parse()方法将字符串Uri解析为Uri类型的对象,实例代码如下://视频uriUri uri= MediaStore.Video.Media.EXTERNAL_CONTENT_URI;通过query()方法查询数据通过getContentResolver()方法获取ContentResolver对象,调用该对象的query()方法查询数据//获取内容提供者ContentResolver contentResolver = context.

2021-09-07 20:50:38 932

原创 申请运行时的权限

Android系统规定,程序访问系统的一些关键信息是时,必须申请权限。根据程序适配Android SDK版本的不同,申请权限为两种方式,分别为静态申请权限和动态申请权限静态申请权限适用于 Android SDK6.0以下的版本,在清单文件AndroidManifest.xml的 < manifest > 节点中声明需要申请的权限,以申请SD卡写权限为例,代码为:<uses-permission android:name="android.permission.WRITE_EXTER

2021-09-07 20:34:40 437

原创 本地视频播放器

文章目录本地视频播放器一、欢迎界面的编写1. 功能1:延迟两秒跳转到主界面2. 功能2:触屏点击立即跳转到主界面3. 清单文件设置二、获取本地数据1. 编写主界面布局2. 动态获取权限3. 编写方法获取视频数据4. 发送消息三、设置适配器并绑定数据1. 设置适配器布局2. 编写适配器四、实现简单播放1. item点击事件2. 播放器界面布局3. PlayerActivity编写4. 清单文件设置本地视频播放器一、欢迎界面的编写编写跳转界面方法//跳转到主界面并关闭当前界面private void

2021-08-24 21:07:40 307 1

原创 本地音乐播放器Demo

文章目录一、主界面布局二、编写Music类三、编写适配器四、编写MainActivity一、主界面布局父布局使用RelativeLayout,列表使用RecyclerView显示 <TextView android:id="@+id/tv_title" android:text="音乐播放器" android:gravity="center" android:textSize="25dp" android:te

2021-08-22 15:14:45 536

原创 连续两次back退出应用

按键操作理解操作的基本类型down:手指按下up:手指从按键上离开按键操作的顺序:down->down->…->up对按键的任何一个操作,系统都会创建一个KeyEvent对象来对应这个操作按键的长按监听:down之后一定时间还没有up时会触发长按监听回调代码public class MainActivity2 extends AppCompatActivity { private Boolean flag=false; //是否能够退出标识 //将

2021-08-18 17:05:06 148

原创 实现图片拖动且限制拖动的范围

触屏操作的理解最基本的操作类型:down:手指按下move:手指在屏幕上移动up手指从屏幕上离开触屏操作的顺序:down->move->move->…->up对屏幕的任何一个操作,系统都会创建一个MotionEvent对象来对应这个操作相关APIMotionEvent:触屏事件int ACTION_DOWN=0 代表downint ACTION_MOVE=2 代表moveint ACTION_UP=1 代表upgetAction():得到事件类型值

2021-08-18 16:01:32 439

原创 使用Handler实现延迟跳转界面

public class HelloActivity extends AppCompatActivity { private Handler handler=new Handler(){ @Override public void handleMessage(@NonNull Message msg) { super.handleMessage(msg); if (msg.what==1){

2021-08-11 15:38:53 228

原创 使用Animation实现界面切换的平移动画

向右平移activiy中,使用overridePendingTransition方法,通过这个方法添加的跳转动画会覆盖掉即将到来的跳转动画效果startActivity(new Intent(MainActivity2.this, MainActivity3.class));overridePendingTransition(R.anim.translate2,R.anim.translate1);translate2.xml<translate xmlns:android="http:.

2021-08-11 15:36:18 244

Android自用英文单词库

Android自用英文单词库

2022-02-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除