首頁 >後端開發 >php教程 >php安全實例詳解

php安全實例詳解

小云云
小云云原創
2018-03-06 10:27:141908瀏覽

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); // 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 指令插入到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); // 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安全實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn