php 安全

web 安全

1. sql 注入

通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。

防御:首先过滤,然后进行参数绑定。

2. XSS

Cross Site Scripting 跨站脚本

原理:以不同方式给网页嵌入脚本,以达到攻击目的。

防御:过滤输入。

$id = (int) $_REQUEST['id'];
if( $id > 0 ){

}
$name = htmlentities($_REQUEST['name'], ENT_QUOTES, "UTF-8");
// 注意,如果这里不进行转化也是可以的,
// 只要在输出的时候进行转化(建立在已经参数绑定的情况下)。

3. CSRF

Cross-site request forgery 跨站请求伪造

原理:Helen 登录了微博后又浏览了一个有害站点,有害站点上伪造了一个 post 微博,这时候 Helen 就在不知情的情况下发了一条微博。

防御:微博页面中嵌入一个随机 token ,微博服务器端验证 token 值。

4. 点击劫持

ClickJacking

原理:大概有两种方式,一是攻击者使用一个透明的 iframe ,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的 iframe 页面;二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置。

防御:使用 js 判断框架是否在同一个域名下。添加头部指令: X-Frame-Options。

// js 
if (top.location.hostname !== self.location.hostname) {
    alert("您正在访问不安全的页面,即将跳转到安全页面!");
    top.location.href = self.location.href;
}

// Apache 配置:
Header always append X-Frame-Options SAMEORIGIN

// nginx 配置:
add_header X-Frame-Options SAMEORIGIN;

5. 上传文件

原理:可能会被上传各种类型的非法软件。

防御:检测类型,检测大小。

6. zip 炸弹

原理:有些 zip 文件看起来很小,解压后非常大

防御:不要做这样的操作:对用户上传的压缩文件解压,处理,再压缩。因为你解压的时候,很可能你的服务器就被挤爆了。

7. session 劫持

原理:客户端和服务端通信时候,黑客抓包,获取 sessionid ,最终黑客与服务器通信。

防御:
设置 HttpOnly,时常重设 sessionid。

8. 密码存储

$hashedPassword = password_hash('password', PASSWORD_DEFAULT);
password_verify('the wrong password', $hashedPassword); // false
password_verify('my super cool password', $hashedPassword); // true

9. 暴力破解

/**
防御:
1. 限制次数
2. 验证码
3. 防火墙分析 类似 fail2ban
*/

服务器安全

1. 修改 22 端口

vi /etc/ssh/sshd_config
firewall-cmd --list-all
firewall-cmd --add-port=8888/tcp --permanent
firewall-cmd --reload
# 如果是阿里云服务器,不要忘记修改阿里云安全组

2. 修改 mysql root 名称

# 修改 mysql 数据库中的 user 表,然后 flush privileges

3. 禁止 root 远程登陆

vi /etc/ssh/sshd_config
PermitRootLogin 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值