这是我参与「第四届青训营 」笔记创作活动的的第4天
从攻击角度出发
Cross-Site Scripting(XSS)
- Stored XSS
- Reflected XSS
- DOM-based XSS
- Mutation-based XSS
Cross-Site request forgery
Injection
SQL injection
CLI
OS command
Server-Side Request Forgery
Denial of Service
ReDoS
Logical DoS
Distributed DoS
传输层
中间人攻击
从防御角度出发
- XSS
不要将用户提交的内容直接转成DOM,尽量转换成字符串
应用已有工具
须留意的点:
当必须动态生成DOM时
1.string转为DOM时注意string转译
2.上传svg注意扫描script标签
3.尽量不允许自定义跳转链接时或做好过滤
4.允许自定义样式时额外留意url等 - Content Security Policy
识别域名的安全性
过滤eval+inline script
查询相关资料学习到:
公开密钥中最著名的算法——RSA算法。
整个RSA算法可以表示成:
其中M代表需要加密的信息,它可以是文字、音频、图片等等;C代表加密之后的信息;E(x)代表加密算法,这里E(M)表示对原信息进行加密运算;D(x)代表解密算法,这里D(C)表示对密文进行解密运算。此外我们用<N,e>代表公钥,<N,d>代表私钥。
加密的具体过程:
a. 随机选取两个不同的素数p,q
b. 令N=p×q
c. 计算欧拉函数φ(N)=(p-1)×(q-1)
d. 随机选取一个整数e,e需满足两个条件:e与φ(N)互质,1<e<φ(N)
e. 令d=e-1modφ(N)
f. 令<N,e>为公钥,<N,d>为私钥
通过上述对于加密过程的描述,能够推出M=CdmodN,即通过加密后的信息与公钥得到了原信息。能否只通过N,e,φ(N)推出d呢?
吴军在《数学之美》中谈到“世界上没有永远破不了的密码,关键是它能有多长时间的有效期。一种加密方法只要保证50年内计算机破解不了也就可以满意了”现如今破解RSA算法最直接的办法是对N进行因数分解,即试出p和q,通过p和q求出φ(N),即在已知e的情况下,能试出d也就得到私钥了。
本文内容来源于今日课程《web开发的安全之旅》