1. sql 注入通过把 sql 命令插入到 web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 sql 命令。
防御:首先过滤,然后进行参数绑定。
2. xsscross site scripting 跨站脚本
原理:以不同方式给网页嵌入脚本,以达到攻击目的。
防御:过滤输入。
$id = (int) $_request['id'];if( $id > 0 ){}
$name = htmlentities($_request['name'], ent_quotes, utf-8);// 注意,如果这里不进行转化也是可以的,// 只要在输出的时候进行转化(建立在已经参数绑定的情况下)。
3. csrfcross-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); // falsepassword_verify('my super cool password', $hashedpassword); // true
9. 暴力破解/**防御:1. 限制次数2. 验证码3. 防火墙分析 类似 fail2ban*/
服务器安全1. 修改 22 端口vi /etc/ssh/sshd_configfirewall-cmd --list-allfirewall-cmd --add-port=8888/tcp --permanentfirewall-cmd --reload# 如果是阿里云服务器,不要忘记修改阿里云安全组
2. 修改 mysql root 名称# 修改 mysql 数据库中的 user 表,然后 flush privileges
3. 禁止 root 远程登陆vi /etc/ssh/sshd_configpermitrootlogin
web 安全1. sql 注入通过把 sql 命令插入到 web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 sql 命令。
防御:首先过滤,然后进行参数绑定。
2. xsscross site scripting 跨站脚本
原理:以不同方式给网页嵌入脚本,以达到攻击目的。
防御:过滤输入。
$id = (int) $_request['id'];if( $id > 0 ){}
$name = htmlentities($_request['name'], ent_quotes, utf-8);// 注意,如果这里不进行转化也是可以的,// 只要在输出的时候进行转化(建立在已经参数绑定的情况下)。
3. csrfcross-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); // falsepassword_verify('my super cool password', $hashedpassword); // true
9. 暴力破解/**防御:1. 限制次数2. 验证码3. 防火墙分析 类似 fail2ban*/
服务器安全1. 修改 22 端口vi /etc/ssh/sshd_configfirewall-cmd --list-allfirewall-cmd --add-port=8888/tcp --permanentfirewall-cmd --reload# 如果是阿里云服务器,不要忘记修改阿里云安全组
2. 修改 mysql root 名称# 修改 mysql 数据库中的 user 表,然后 flush privileges
3. 禁止 root 远程登陆vi /etc/ssh/sshd_configpermitrootlogin
相关推荐:
php安全地上传图片
php安全开发库详解
php安全配置记录和常见错误的详细总结介绍
以上就是php安全实例详解的详细内容。
