135  
查询码:00000496
Web常见的防御手段
作者: 朱凡 于 2020年07月18日 发布在分类 / FM组 / FM_App 下,并于 2020年07月18日 编辑

防御手段

知识要点

1.密码安全

-泄露渠道

。数据库被偷

。服务器被入侵

。通讯被窃听

°内部人员泄露

。其他网站(撞库)

•防御

。严禁明文存储

。单向变换

。变换复杂度要求

。密码复杂度要求

。加盐(防拆解)

•哈希算法

。明文-密文对应

°雪崩效应-明文小幅变化密文剧烈变化

。密文-明文无法反推

。密文固定长度md5 sha1 sha256

・密码传输安全

。https传输

。频次限制

。前端加密意义有限-传输层加密不会泄露但不代表不能登录

•摘要加密的复杂度

。md5反查

https://www.cmd5.com/

///app/password.js

constcrypto=requi re('crypto')

consthash=(type,str)=>crypto.createHash(type).update(str).digest('hex')

constmd5=str=>hash('md5',str)

constsha1=str=>hash('sha1',str)

constencryptPassword=(salt,password)=>md5(salt+'abced@#4@%#$7'+password)constpsw='123432!@#!@#@!#'

console.log('md5',md5(psw))

console.log('sha1',sha1(psw))

module.exports=encryptPassword

两种强化方式

// i ndex.js

constencryptParequire

if(res.length!ressalt

console log

i f(passwordrespasswor .

sql=

update test.user

set salt = ?, password = ? where username = ?

constMath randomDate getTime

resquery sqlenc「yptPasswo「d password),username])

ctx session username ctx request body username ctx redi rect

)

}else(

console log

i f(encryptPassword(res[0].salt,password)===res[0].password) (ctx.session.username=ctx.request.body.username ctx.redi rect('/?from=china')

)

)

2.人机验证与验证码

http://www.lisa33xiaoq.net/1232.html


3.HTTPS配置

https 和密码学 https://www.cnblo g s.eom/hai-blo g/ D/831 1671 .html 浏览器如何验证 SSL 证书 http://weme dia.ifeng.com/70345206/wemedia.shtml

HTTP的弱点


#查看需要经过的节点

traceroutewww.baidu.com

危害

・窃听

O密码敏感信息

・篡改

。插入广告重定向到其他网站(JS和Head头)

特点

・保密性

・完整性

-真实性

HTTP+SSL=HTTPS

什么是SSL证书

SSL证书由浏览器中“受信任的根证书颁訓勾"在佥理艮务器身份后颁发,具有网站身份验证和加密传输双重功能

密码学

对称加密


对称加密的一大缺,繼密钥的管理与分配,换句话说,如何把密钥发送需要解密你的消息的人的手里是一 个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中逋常的做法是将对称加密的密钥 进行非对称加密,然后传送给需要它的人。

DES

不对称加密

.产生一对秘钥

・公钥负责加密

•私钥负责解密

•私钥无法解开说明公钥无效-抗抵赖

・计算复杂对性能有影响(极端情况下100。倍)

常见算法RSA (大质数)、Elgamal 、背包算法、Rabin、D-H、ECC (椭圆曲线加密算法)。

RSA原理

http://www.ruanyifen g .com/blo g /2013/06/rsa al g orithm part one.html

SSH公钥登录原理

・密码口令登录

通过密码进行登录,主要流程为:

1、客户端连接上服务器之后,服务器把自己的公钥传给客户端

2、客户端输入服务器密码通过公钥加密之后传给服务器

3、服务器根据自己的私钥解密登录密码,如果正确那么就让客户端登录

•公钥登录

公钥登录是为了解搪次新服务騷暖输入密码的问题,流行使用RSA加密方案,主要流程包含:

1、客户端生成RSA公钥和私钥

2、客户端将自己的公钥存放到服务器

3、客户端请求连接服务器,服务器将一个用公钥加密随机字符串发送给客户端

4、客户端根据自己的私钥加密这个随机字符串之后再发送给服务器

5、服务器接受到加密后的字符串之后用公钥解密,如果正确就让客户端登录,否则拒绝。

这样就不用使用密码了。

#生成公钥

ssh-keygen -t rsa -P ''

xubi n@xubi ndeMBP:ssh-keygen

Generating public/private rsa key pai r.

Enter file i n whi ch to save the key (/Users/xubin/.ssh/id_rsa):

/Users/xubin/.ssh/id_rsa al ready exi sts.

Overwrite (y/n)? yes

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved i n /Users/xubi n/.ssh/id_rsa.

Your public key has been saved i n /users/xubin/.ssh/id_rsa.pub.

The key fi ngerpri nt i s:

SHA256:IeFPfrcQ3hhP64SRTAFzGIHl2ROcopl5HotRi2XNOGk xubin@xubindeMBP

The key's randomart imageis:

+---[RSA 2048]+

|.o*@=o|

|..oEB=o|

|o@=+O.|

|B=+o @ .|

|=So**|

丨■o■ = ■|

|o |

||

||

+[SHA256]+

#查看公钥

cat ■ssh/id_rsa.pub

#将公钥拷贝到服务器

scp ~/.ssh/id_rsa.pub root@47.98.252.XXX:/root

#将公钥加入信任列表

cat id_dsa.pub>> ~/.ssh/authorized_keys

网站如何通过加密和用户安全通讯

根证书在哪里

windows

在Windows下按Windows+ R,输入certmgr.msc,在"受信任的根证书颁发机构证书中”找到"ROOTCA”,截 止日期2025/08/23,单击右键,属性,可限看其属性"禁用此证书的所有目的"

-J AddTnjst External CA Root□Baltimore CyberTru&t Root

T」£urtifkMcm Authority of Wo... Certific

Class 3 Public Primary Certifi,,. Class 3-fljCopyright (c) 1997 Microsoft... Copyrii

-RjDigiCert Global Root CA-rJEquifax Secure Certificate Au... Equifa>

-JGTE CyberTrust Global Root-JMicrosoft AuthentJcodediiTi) ...

^*1Microsoft Root CertificateA”

Microsoft Root Certificate A...

-J Mkrosoft Root Certificate A.“

_J Microsoft Re&t Certificate A.

JNO L1ABIUTYACCEPTED, (d... NO山

StartCom Certification Au0io.r. StartCc

LjJVeriSign Class 3 Public Prim...

钥匙串访问

点按以解锁“系统相证书”钥&串。



AAA Certificate Services

根证书颁发机构

过期时间:2029年1月1日星期一中国标准时间上午7:59:59©此证书有效

Actalls Authentication Root CA

AddTrust Class1CA Root

AddTrust External CA Root

Admin-Root-CA

AffirmTrust Commercial

AffirmTrust Networking

AffirmTrust Premium

AffirmTrust PremiumECC

Amazon Root CA 1

Amazon Root CA 2

Amazon Root CA 3

AmazonRoot CA4

ANF Global Root CA

Apple Root CA

Apple Root CA-G2

Apple Root CA-G3

Apple Root Certificate Authority

AppliestionCA2 Root

Atos TrustedRoot 2011

Autorid ad de Certificacion Firmaprofesionaf CIF A62634068

Autorid addeCertificacion Raiz del Estado Verezolano

BaltimaineCyberTrust Root

Belgium Root CA2

Buypass Class2Root CA

QinrcnuQ厂IMqio0A

配置过程

・修改开发机的host前置

#开发机的hosts文件/etc/hosts

#添加

127.0.0.1www.josephxia.com

•阿里云取得的真实证书(域名wwwjosephxia.com

• docker模拟nginx环境

#安全课程根目录

version: '3.1'

servi ces:

ngi nx:

restart: always

image: ngi nx

ports:

-80:80

-443:443

volumes:

-./conf.d/:/etc/ngi nx/conf.d

-./html/:/var/www/html/

•原始的80端口服务

#conf.d/www.josephxia.com.conf

server {

listen;

server_namewww.josephxia.com ;

location/{

root /var/www/html;

indexindex.htmlindex.htm;

)

)

#增加的部分

server {

listen4;

server_name localhost;

ssl on;

root html;

index index.htmlindex.htm;

#公钥+证书

ssl_certi fi cateconf.d/cert/www.josephxia.com.pem ;

#私钥

ssl_certi fi cate_key conf.d/cert/www.josephxia.com.key ;

ssl_sessi on_ti meout 5m;

ssl_ciphers ECDHE-RSA-AES128-GCM-

SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location/(

root /var/www/html;

index index.html index.htm;

)

)

•增加http -> https强制甥牌专

#conf.d/www.josephxia.com.conf

server {

listen80;

server_namewww.josephxia.com ;

#location/(

#root/var/www/html;

#i ndex i ndex.html i ndex.htm;

#)

location/(

rewrite A(.*)https://www.josephxia.com/ J1 permanent;

)

)

SSL证书分类

入门级DVSSL-域名有效无门槛

企业型OVSSL-企业资质、个人认证

增强型EVSSL -浏览器给予绿色地址栏显示公司名字

%1.helmet中间件

https://www.npm j s.com/packa g e/koa-helmet

//npm i koa-he"lmet -s

constKoa=requi re

consthelmet=require

constapp=newa

app.use(helmet));

app.use((ctx)={

ctx.body= "Hello world"

));

app.listen(4000);

•Strict-Transport-Security:强制使用安全连接(SSL/TLS之上的HTTPS)来连接到服务器。

•X-Frame-Options:提供对于"点击劫持啲保护。

•X-XSS-Protection:开启大多现代浏览器内建的对于跨站脚本攻击(XSS)的过滤功能。

•X-Content-Type-Options:防止浏览器使用MIME-sniffing来确定响应的类型,转而使用明确的content-type来确定。

•Content-Security-Policy:防止受到跨站脚本攻击以及其他跨站注入攻击。

%1.Session管理对于cookie的安全使用,其重要性是不言而喻 的。特别是对于动态的web应用,在如HTTP这样的无状态协议的之 上,它们需要使用cookie来维持状态

•Cookie标示

o secure

o HttpOnly

•Cookie域

。domain

。path

。expires

%1.浏览器安全控制

•X-XSS-Protection

防止反射型XSS

•Strict-Transport-Security

强制使用HHPS通信

•CSP

https://developer.mozilla.or g /zh-CN/docs/Web/HTTP/Headers/Content-Securit y-

Policyby cnvoid#%E6%A6%82%E8%BF%B0

https:// juej in.im/post/5c6ad29ff265da2da00ea459

HHP响应头Content・Security・Policy允许站点管理者在指定的页面控制用户代理的资源。除了少数例外,这条政策将 极大地指定服务源 以及脚本端点。这将帮助防止跨站脚本攻击(cross-site script)().

(meta http-equivcontentimg-src

https://*; child-src 'none';"〉

安全防范的总结

https://www.tuicool.com/articles/7Ff2EbZ



 推荐知识

 历史版本

修改日期 修改人 备注
2020-07-18 13:30:06[当前版本] 朱凡 创建版本

 附件

附件类型

JPEGJPEG

知识分享平台 -V 4.8.7 -wcp