信安通用基础知识

本文探讨了密码学中的经典误区,如口令处理和加密原理,强调PGP的保密协议价值。还介绍了信安经典的安全原则,以及XSS和CSRF攻击的利用逻辑及防范方法。讨论了对称和非对称加密的潜在风险,密钥管理和SQL注入的防护措施,同时给出了安全建议以提升系统安全性。
摘要由CSDN通过智能技术生成

密码学经典误区

口令和密码不应误用。口令不涉及加解密,也不是密文。整个过程只涉及hash。
密钥而不是密码算法决定安全性。
古典加密的特征是,加密字符而非比特。

PGP优良保密协议

在这里插入图片描述

信安经典

可靠性,天灾人祸时还能不能用。
可用性,四个九。
保密性,只有该看的人能看见。
完整性,传输错误、人为篡改。
不可抵赖,你发过、你收过、你说过。
可控性,信息不会到不该去的地方。

其它安全手段

除了上图的对称/非对称加密、摘要、签名等密码学手段,
主要的安全手段还有正确配置(比如不允许root远程登录,关闭不必要端口等),正确使用加密api(认证函数要自己实现不要留一段注释然后return true,使用合适的密码学算法,正确生成参数等),安全审计(日志),版本更新(如漏洞修补,放弃兼容有安全问题的旧版本等),用户管理(如临时权限,定期更换密码等)。

XSS与CSRF cross site request forgery

XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。

CSRF的利用逻辑

简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

CSRF示例

假如一家银行用以运行转账操作的URL地址如下:http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
那么,一个恶意攻击者可以在另一个网站上放置如下代码: <img src=“http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman”>
如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金。cookie被窃取,请求被伪造。
这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。
透过例子能够看出,攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义运行操作。

CSRF防范:服务器在含有表单的响应中添加校验token

由于CSRF的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在cookie中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再运行CSRF攻击。这种数据通常是窗体中的一个数据项。服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过窗体提交请求时,这个伪随机数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验token的值为空或者错误,拒绝这个可疑请求。
在网页f12,可以看见这样的隐藏表单:

<input type="hidden" name="_csrf" value="随机字符串">

此外,referer字段检查一定程度上也可以防范CSRF,可以提一嘴,但其不完善。

XSS cross site scripting

https://www.jianshu.com/p/4fcb4b411a66
(我的描述非常不严谨,纯粹是为了好记。原理、 示例、防范可参考上面的链接)
反射型XSS,比如,在搜索框里输入了js代码,如果网站没有防范,会执行这个代码。
存储型XSS,如果用户的输入会被存储到文件/数据库中,且用户输入是js代码,那么其它用户访问网站时,由于也会加载文件/数据库,每次访问都会执行这个代码。

common weakness enumeration

https://cwe.mitre.org/

常见密码api误用(摘自毕设参考文献)

对称加密

Use a Non-Random IV for CBC Encryption (字典攻击)
Use ECB-Mode for Encryption (选择明文攻击。在java/android中,cipher.getinstance如果不指定模式和IV,会默认使用ECB模式
Insufficient Key Length (128位以下的密钥面临暴力破解)
Use a Risk or Broken Algorithm for Symmetric Encryption (如DES)
Use the Same Cryptographic Key Multiple Times or Hard-Coded Crptographic Keys for Encryption

hash

Use a Risk or Broken Algorithm (如MD4,MD5)

非对称加密

Inadequate Key Length (比如RSA,现在推荐2048位)
RSA Algorithm without OAEP (Optimal Asymmetric Encryption Padding,若不支持会削弱安全性)

Improper Certificate Validation

Missing Validation of Certificate
Improper Check for Certificate Revocation(撤销)
Improper Validation of Certificate Expiration
Improper Validation of Certificate with Host Mismatch
Improper Following of a Certificate’s Chain of Trust

密钥管理

Reusing a Nonce, Key Pair in Encryption (重放攻击)
Use of a Key Past its Expiration Date (扩大了攻击窗口)

安全建议

如选用基于口令的算法或在用户输入密码时,请避免使用String来引用,使用char[],用完立刻置空char[],避免内存攻击,如heap dump分析等。

sql注入防范

预编译PreparedStatement可以终结这个问题。
一般是先拼接语句再编译,
如果先编译再拼参数,用户输入就无法影响查询语句语法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值