web开发的安全之旅 | 青训营笔记

108 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第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算法可以表示成:

 MD(C)E(M)CM\underset{E(M)}{\overset{D(C)}{\rightleftarrows}}C

其中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开发的安全之旅》