研发安全检查项(DevSecChecklist,Development Security Checklist) 开发人员视角如何研发出安全的应用? 服务开放(包含域名、IP、端口、服务、接口等) 原则:仅暴露所需访问范围(服务暴露面的收窄,能有效减少被攻击面) 禁止向互联网暴露除443/80以外的端口,禁止出现HTTP[S]以外的协议,能极大降低各类服务被攻击的情况。 建议全站使用HTTPS协议,避免信息在传输过程中泄露。 建议HTTPS开启HSTS,防止中间人攻击。 建议修改服务器配置禁用TLS1.2。 禁止将管理后台开放到互联网可访问,建议限制只能固定来源IP可访问,能最大降低后台的被攻击面。 禁止公网域名与内网域名混用,建议分开使用不同域名或不同后缀。 建议已不再使用的域名、IP、端口、API接口,需要及时下线。 认证鉴权(包括注册、登录、密码等)...
电子邮件伪造实践
邮箱邮件安全如何做?从邮件伪造原理和常见的钓鱼邮件入手,看看如何来伪造邮件并提供伪造邮件代码工具。通过SPF、DKIM、DMARC、PTR等方法来组织伪造邮件,并提供一些方法来加固邮件以及提升使用邮件过程中的安全意识。
正则安全
正则基础知识 正则编写思路 编写正则 找锚点:找到标记位 去噪点:去除可能存在的噪点 取数据:取出需要的数据 列举用例数据 正用例数据:需要匹配到的数据样例 反用户数据:不需要匹配到的数据样例 验证正则 正则和正反用例数据填入 确保正则中无红色标记 正用例数据可以全部匹配到,反用例数据全部匹配不到 验证效果 根据实际数据进行效果验证继而优化正则,循环如此 正则常见例子 用户名 只允许字母、数字、下划线、横杠;最小四位数,最多16位数; ^[a-z0-9_-]{4,16}$ 数据处理前应全部转为小写 字符串两遍应去掉空格 手机号 (13|14|15|16|17|18|19)\d{9}[^\d] TRUE 13512345678 15558077765 FALSE 12345678901 10000000000 135123456789 中文 [^\x00-\xff] TRUE 中文 测试...
隐藏在图片背后的信息
图片背后隐藏着什么样的信息,可以让人知道你的地理位置、你的设备型号。
硬编码密钥
硬编码密钥存在什么风险? 密钥暴露面越多,风险就越大 密钥硬编码在代码中导致的直接结果就是代码在哪里,密钥就在哪里。研发人员电脑上存在密钥,如果电脑被攻击则密钥也会被泄漏。其次研发人员会因为没有安全意识,将代码上传至各类私有云盘或家里电脑又或是U盘中,导致风险面增大。更有甚者,将代码上传至GitHub,而忽略了代码中的硬编码密钥,从而被恶意着利用,比如我曾经发现的控制某云厂商全部管理权限。 攻击者拿到硬编码密钥后攻击成本较低 攻击者无论通过什么方式拿到你代码,首先就会去看硬编码密钥部分,尝试去利用这些代码中的明文密钥,比如存在邮箱密码则会去尝试登陆你的邮箱进一步渗透挖掘邮件中有价值的内容,有FTP账号密码则会尝试连接FTP挖掘FTP Server中有价值的文件。 硬编码意味着你不会去变更它...
枚举子域名
通过搜索引擎、Google HTTPS证书透明度、流量代理、GitHub搜索、DNS域传送、crossdomain.xml、DNSPod、DNS查询爆破等方式来枚举子域名,并DNS服务商公布的子域名数据加上通用字典和其它子域名爆破工具的字典结合起来使用Python Asyncio协程和多进程快速的枚举子域名。