PHP安全之道学习笔记6:密码安全
PHP安全之道:密码安全
最近几年用户数据泄露越发频繁,一些使用PHP技术的大型网站被暴库或者脱库,facebook公司曾因为此类事件股价暴跌。从长远发展来看,用户的数据安全对于网站来说至关重要,所以开发者需要关注数据相关的安全,并提高一些对敏感数据的技术性保护。
用户数据的安全往往和用户密码安全息息相关。用户将账号和相关数据存储在服务器上,而密码成了第一个环节。
1.常规加密方法
MD5或者SHA1
具体代码如下所示:
<?php
$password = $_POST['password'];
echo md5($password); // md5加密
echo sha1($password); // sha1加密
由于这种加密手段比较常规,如果用户设置的密码过于常见简单,攻击者完全可以使用密码字典进行暴力破解。所以不建议使用MD5等弱加密算法对密码等敏感数据进行加密,使用散列算法进行加密更佳,如:SHA256或者SHA512。这些算法被用于如ssl证书生成或一些重要的生成算法中,值得使用。
PHP内置了hash()函数,具体使用如下代码所示。
<?php
$password = $_POST['password'];
echo hash('sha256', $password); // 使用sha256加密
echo hash('sha512', $password); // 使用sha512加密
曾经有一个神奇的电商网站有一句有名的slogan:"我为自己代言。"在密码安全方面我们也可以为自己的数据加点“盐”,增加安全系数。
使用盐(salt)甚至随机salt来加密,可以让破解更加困难。简单例子如下:
<?php
$password = $_POST['password'];
$salt = rand(1, 100000);
$password = sha1($password . $salt);
而更为复杂的加密,可以使用mcrypt函数来生成salt,代码如下:
<?php
$password = $_POST['password'];
$salt = base64_encode(mcrpyt_create_iv(32, MCRYPT_DEV_RANDOM);
$password = md5($password . $salt);
当然还可以根据自己实际业务需要自定义自己的算法,以前和腾讯的研发联调接口的时候,我们还会约定不同的业务接口使用不同的业务代码来增加token算法的复杂度。
为了防止暴力破解,可以注意以下方面:
- 1.使用验证码进行登录验证或相关授权。
- 2.定期刷新秘钥。
- 3.使用随机数的复杂算法。
- 4.限制某时间段内验证次数。
PHP安全之道学习笔记6:密码安全的更多相关文章
- postgresql修炼之道学习笔记(1)
好好学习吧. 本笔记 仅作为摘要记录 前两章,主要是数据库对比和安装等. 对比,就比多说了,总是和别人比较,会显得自己身价低,呵呵. 安装也有很多文章,不多说. 第二章提到了一些简单的配置, 其在 d ...
- postgresql修炼之道学习笔记(2)
随后的章节 介绍了基础的sql,这个我略过了,我喜欢在开发的时候,慢慢的研究,毕竟有oracle的基础. 现在,学习psql工具 使用create database创建数据库的时候,出现如下问题: ...
- PHP安全之道学习笔记1:PHP项目安全设置
在全球范围来看,超过了80%的网站是使用php进行搭建的,由于脚本语言和早期版本设计的诸多原因,php项目存在不少安全隐患.从配置选项来看,可以做如下的优化. 1.屏蔽PHP错误输出. 在/etc/p ...
- PHP安全之道学习笔记2:编码安全指南
编码安全指南 编程本身就应该是一门艺术,而安全编程更是一种在刀尖上舞蹈的艺术,不仅要小心脚下的锋利寒刃,更要小心来自网络黑客或攻击者的狂轰乱炸. - by code artist 1.hash比较的缺 ...
- 学习笔记-CTF密码相关
RSA共模攻击 RSA基本原理 ① 选择两个大的质数p和q,N=pq: ② 根据欧拉函数,求得r=(p-1)(q-1): ③ 选一个小于r的整数e,求得e关于模r的模反元素d: ④ 将p和q的 ...
- PHP安全之道学习笔记4:系统命令注入
系统命令注入 我们有时候写代码会用php脚本去调用系统函数完成业务功能,但是一些系统函数属于高危操作,一旦被webshell或者抓住漏洞则后患极大. 下面整理如下风险系统函数. exec() 函数 该 ...
- linux运维之道学习笔记
linux常用命令 1.find命令 find / "*.log" 查找/目录下.log结尾的档案 find / -mtime -3 查找/目录下三天内被修改的档案 find / ...
- SQL反模式学习笔记20 明文密码
目标:恢复或重置密码 反模式:使用明文存储密码 1.存储密码 使用明文存储密码或者在网络上传递密码是不安全的. 如果攻击者截取到你用来插入(或者修改)密码的sql语句,就可以获得密码. 黑客获 ...
- 【学习笔记】OI玄学道—代码坑点
[学习笔记]\(OI\) 玄学道-代码坑点 [目录] [逻辑运算符的短路运算] [\(cmath\)里的贝塞尔函数] 一:[逻辑运算符的短路运算] [运算规则] && 和 || 属于逻 ...
- 【Python灰帽子--黑客与逆向工程师的Python编程之道】我的学习笔记,过程.(持续更新HOT)
我的学习笔记---python灰帽子 世界让我遍体鳞伤,但伤口长出的却是翅膀. -------------------------------------------- 前言 本书是由知名安全机构Im ...
随机推荐
- ja-netfilte-ja-netfilte
title: ja-netfilte date: 2022-10-16 16:13:50.339 updated: 2023-02-07 22:58:50.672 url: https://www.y ...
- springboot整合apollo配置中心
springboot整合apollo配置中心 springboot整合apollo配置中心官网文档说明得比较清楚,但还是有一些坑注意的. 官网文档:https://www.apolloconfig.c ...
- springboot整合hibernate(非JPA)(一)
springboot整合hibernate(非JPA)(一) springboot整合hibernate,非jpa,若是jpa就简单了,但是公司项目只有hibernate,并要求支持多数据库,因此记录 ...
- MIGO新增页签增强
1.文档说明 本方法是将新增字段,展示在MIGO的新增页签中,并保存到自建表. 新增页签的方法,和采购订单新增页签的方法原理基本一致,都是需要创建函数组,并实现相应方法和屏幕,并在增强中调用该函数组, ...
- 24、去除右上方的debug图标
class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext ...
- SQL Server系列:系统函数之聚合函数
聚合函数:指对一组值执行计算,并返回单个值.除了 Count(统计函数) 外,聚合函数都会忽略 Null 值 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用 1.Avg():返回 ...
- 详解CCE服务:一站式告警配置和云原生日志视图
本文分享自华为云社区<新一代云原生可观测平台之CCE服务日志和告警篇>,作者:云容器大未来. 告警和日志是运维人员快速定位问题.恢复异常的主要手段.运维人员日常的工作模式往往是先接收告警信 ...
- 连Python都不熟也能跑通AI人脸识别?“隐藏Boss”竟是它!
摘要:先把AI人脸识别跑起来,然后研究它是如何实现的,整个过程中确实收获不少.所谓先跟着做,再跟着学,实践与理论结合,自己感觉有理解了一些基础概念入个门,在此分享一下自己的捣鼓经验. 1.买台小&qu ...
- 单向数据流-从共享状态管理:flux/redux/vuex漫谈异步数据处理
不管是Vue,还是 React,都需要管理状态(state),比如组件之间都有共享状态的需要. 什么是共享状态? 比如一个组件需要使用另一个组件的状态,或者一个组件需要改变另一个组件的状态,都是共享状 ...
- Kubernetes(K8S) Service 介绍
定义一组 Pod 的访问规则 存在的意义 防止 Pod 失联(服务发现),Pod 重启后,IP会变 定义一组 Pod 访问策略,负载均衡 Pod 和 Service 关系 根据 label 和 sel ...