Linux
常用的命令
cd:改变目录
cd .. :回退到上一个目录
pwd:显示当前所在的目录路径
ls(ll):列出当前目录中的所有文件,(ll)列出的内容更详细、
touch:新建一个文件,如touch index.js就会在当前目录下新建一个index.js文件
rm:删除一个文件,rm index.js就会把index.js删除
mkdir:新建一个目录,就是新建一个文件夹
rm -r:删除一个文件夹,rm -r src删除src文件夹
mv:移动文件,mv index.html src,其中index.html是我们要移动的文件,src是目标文件夹,当然这样写,必须要保证文件和文件夹在同一目录下
reset:重新初始化终端/清屏
clear:清屏
history:查看命令历史
help:帮助
exit:退出
#:表示注释
配置固定IPsudo vim /etc/netplan/00-installer-config.yaml
12345678910111213# This is the network config written by 'subiquity ...
Redis
Redis简介Redis是Remote Dictionary Server的缩写,是一个开源的基于内存的数据存储系统
五种基本数据类型:
字符串 String
列表 List
集合 Set
有序集合 SortedSet
哈希 Hash
五种高级数据类型:
消息队列 Stream
地理空间 Geospatial
HyperLogLog
位图 Bitmap
位域 Bitfield
安装配置安装
1apt install redis
启动服务
1redis-server
启动客户端
1redis-cli
字符串 String
命令
SET:设置键值对
GET:获取键值对的值
DEL:删除键值对
EXISTS:判断键值对是否存在
KEYS:列出匹配的键值对
FLUSHALL:删除所有键值对
redis-cli —raw:使存储的数据能够正常显示(中文)
TTL:查看键值对过期时间
EXPIRE:设置过期时间
SETEX:创建键值对的时候加入过期时间
SETNX:在 key 不存在的时候创建键值对
对键值对的操作 set get del exists
123456789101 ...
域名和Https
域名
租域名 zishuq.com
域名解析:www.zishuq.com → 117.50.175.42
备案(根据平台流程备案)
Https部署
申请证书
上传到服务器
nginx配置 443端口
使用openssl生成证书(自签名)
生成私钥文件(private key)
1openssl genrsa -out private.key 2048
根据私钥生成证书签名请求文件(Certificate Signing Reques,简称CSR文件)
1openssl req -new -key private.key -out cert.csr
使用私钥对证书申请进行签名从而生成证书文件(pem文件)
1openssl x509 -req -in cert.csr -out cacert.pem -signkey private.key
也可以合成一条命令
1openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout /etc/ssl/private/private.key -out /etc/ss ...
Django基础内容
mvc
是将存储数据、展示数据、控制数据的三种逻辑相互配合运作的模式,有助于成员分工,简化软件开发复杂度(各个模块有明确的分工)
分别是model、view、controller
model:存储数据,通常是以数据库进行存储,数据内容有变动,会通知view及时更改展示数据
view:建立和使用者之间的界面,传导使用者的请求给controller,并依照controller的要求呈现来自model的资料
controller:管控请求
1. 安装django1pip install django
安装django后python的目录
123456789101112\python310 - python.exe - Scripts - pip.exe - django-admin.exe 【工具,创建django项目中的文件和文件夹】 - Lib - 内置模块 - site-packages - flask - pandas - requests - django 【框架的源码】
2. 创建项目2.1 在终端
打开终端
进行准备放置目录的文件夹
执 ...
Django/Flask Web项目部署
Web项目部署
本质三件事:
租个服务器(含公网ip)+ 配置环境
代码放在服务器
程序运行起来
1. 购买云服务器2. 创建虚拟环境12python -m venv venvsource venv/bin/activate
3.环境uwsgi参考文章:
Setting up Django and your web server with uWSGI and nginx — uWSGI 2.0 documentation
激活虚拟环境并安装uwsgi
12source venv/bin/activatepip install uwsgi
基于uwsgi运行项目
命令参数
12345# flask 框架uwsgi --http:80 --wsgi-file app.py --callable app# django 框架uwsgi --http: 8000 --module mysite.wsgi
文件参数(推荐)
创建venv_uwsgi.ini(启动flask)
1234567[uwsgi]socket = 127.0.0.1:8077chdir = /ho ...
Django开发实例
主题:员工管理系统
1. 新建项目2. 创建app1python manage.py startapp app01
注册app:
3. 设计表结构
id
title
1
开发
2
客服
3
销售
id
name
passwordd
age
account
create_time
depart_id
1
zishuQ
7777
20
1000000
2021/9/4
1
2
aaa
7777
18
10000
2021/9/3
1
3
bbb
7777
19
10000
2021/9/3
2
4
ccc
7777
20
10000
2021/9/3
2
5
ddd
7777
21
10000
2021/9/3
3
6
eee
7777
22
10000
2021/9/4
3
用户表存储名称?ID?ID,数据库范式(理论知识),常见开发都是这样【节省存储开销】名称,特别大的公司。查询的次数非常多,连表操作比较 ...
总结回顾
开发流程
安装Django
1pip install django
创建Django项目
1>>> django-admin startproject mysite
【注意】Pycharm可以创建。如果用Pycharm创建,记得settings,py中的DIR templates 删除
创建app & 注册
123>>> python manage.py startapp app01>>> python manage.py startapp app02>>> python manage.py startapp app03
1234INSTALLED_APPS = [ ... 'app01.apps.App01Config',]
【注意】否则app下的models.py写类时,无法在数据库中创建表
配置 静态文件路径 & 模板的路径(放在app目录下)
配置数据库相关操作
第三方模块(django3版本)
1pip install mysqlc ...
xss漏洞
简述跨站脚本攻击(Cross-site scripting),简称为XSS
XSS攻击通常攻击的网页程序是JavaScript ,实际上也可以包括**Java**、**VBScript**、LiveScript、ActiveX、Flash甚至是普通的HTML
类型反射型(非持久型)XSS解释反射型XSS只是简单的把用户输入的数据从服务器反射给用户浏览器,要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。
示例
123<?php echo "<p>hello, $_GET['user']</p>";?>
此时,传入user参数为
123<script> alert("Hack");</script>
就会执行预设好的JavaScript代码
漏洞成因当用户的输入或者一些用户可控参数未经处理地输出到页面上,就容易产生XSS漏洞。主要场景有以下几种:
将不可信数据插入到HTML标签之间时;// ...
原型链污染
参考文章JavaScript原型链污染原理及相关CVE漏洞剖析 - FreeBuf网络安全行业门户
Node.js原型链污染的利用 - FreeBuf网络安全行业门户
用前端原型链漏洞污染拿下了服务器 - 腾讯云开发者社区-腾讯云 (tencent.com)
原型
三个名字
隐式原型:所有引用类型(函数、数组、对象)都有 __proto__ 属性,例如arr.__proto__
显式原型:所有函数拥有prototype属性,例如:func.prototype
原型对象:拥有prototype属性的对象,在定义函数时被创建
JavaScript 中每个对象都拥有一个原型对象,对象以其原型为模板,从原型继承方法和属性。原型对象也可能拥有原型,并从中继承方法和属性,一层一层、以此类推。这种关系常被称为原型链(prototype chain)
示例:
数组原型链:arr → Array.prototype → Object.prototype
12345678910111213var arr = ['a', 'b', 'c' ...
模板注入
参考文章细说服务器端模板注入(SSTI) - FreeBuf网络安全行业门户
模板注入漏洞全汇总 - 腾讯云开发者社区-腾讯云 (tencent.com)