Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung von PHP-Sicherheitsbeispielen

Detaillierte Erläuterung von PHP-Sicherheitsbeispielen

小云云
小云云Original
2018-03-06 10:27:141892Durchsuche

1. SQL-Injection

Durch Einfügen von SQL-Befehlen in das Webformular zum Senden oder Eingeben der Abfragezeichenfolge des Domänennamens oder der Seitenanforderung und schließlich Täuschen Sie den Server bei der Ausführung bösartiger SQL-Befehle.

Verteidigung: Zuerst filtern, dann Parameterbindung durchführen. 2. XSS Zwecke.

Verteidigung: Eingabe filtern.

3. CSRF

Cross-Site Request Forgery

Prinzip: Helen hat sich bei Weibo angemeldet und dann eine schädliche Website durchsucht. Zu diesem Zeitpunkt hat Helen einen gefälschten Beitrag auf Weibo gepostet.
$id = (int) $_REQUEST['id'];if( $id > 0 ){}
$name = htmlentities($_REQUEST['name'], ENT_QUOTES, "UTF-8");// 注意,如果这里不进行转化也是可以的,// 只要在输出的时候进行转化(建立在已经参数绑定的情况下)。

Verteidigung: Betten Sie einen zufälligen Token in die Weibo-Seite ein und der Weibo-Server überprüft den Token-Wert.

4. Clickjacking

ClickJacking

Prinzip: Ungefähr da Es gibt zwei Möglichkeiten: Der Angreifer verwendet einen transparenten Iframe, der ihn auf einer Webseite abdeckt, und veranlasst dann den Benutzer, auf die Seite zu klicken, ohne es zu wissen Das andere ist, dass der Angreifer ein Bild verwendet, um die Webseite abzudecken und so den ursprünglichen Speicherort der Webseite blockiert.

Verteidigung: Verwenden Sie js, um festzustellen, ob sich der Frame unter demselben Domänennamen befindet. Header-Direktive hinzufügen: X-Frame-Options.

5. Hochladen von Dateien

Grundsatz: Es können verschiedene Arten illegaler Software hochgeladen werden.

Verteidigung: Erkennungstyp, Erkennungsgröße.

// 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;

6. zip *

Prinzip: Einige Zip-Dateien sehen sehr klein aus, sind aber nach der Dekomprimierung sehr groß

Verteidigung: Tun Sie dies nicht: Von Benutzern hochgeladene komprimierte Dateien dekomprimieren, verarbeiten und dann komprimieren. Denn beim Dekomprimieren ist Ihr Server wahrscheinlich überlastet.

7. Session-Hijacking

Prinzip: Wenn Client und Server kommunizieren, fängt der Hacker das Paket ab und erhält es die sessionid und schließlich kommuniziert der Hacker mit dem Server.

Verteidigung: Legen Sie HttpOnly fest und setzen Sie die Sitzungs-ID von Zeit zu Zeit zurück.

8. Passwortspeicherung

9. Brute-Force-Cracking


Serversicherheit

1. Ändern Sie Port 22

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

2. Ändern Sie den MySQL-Root-Namen

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

3. Root-Remote-Anmeldung verbieten

🎜>

1. SQL-Injection
vi /etc/ssh/sshd_configfirewall-cmd --list-allfirewall-cmd --add-port=8888/tcp --permanentfirewall-cmd --reload# 如果是阿里云服务器,不要忘记修改阿里云安全组

Durch das Einfügen von SQL-Befehlen in Webformulare zum Senden oder Eingeben von Abfragezeichenfolgen für Domänennamen oder Seitenanfragen wird der Server letztendlich dazu verleitet, böswillige SQL-Befehle auszuführen.
# 修改 mysql 数据库中的 user 表,然后 flush privileges

Verteidigung: Zuerst filtern, dann Parameterbindung durchführen. 2. XSS Zwecke.

vi /etc/ssh/sshd_configPermitRootLogin

Verteidigung: Eingabe filtern.

3. CSRF

Cross-Site Request Forgery

Prinzip: Helen hat sich bei Weibo angemeldet und dann auf der schädlichen Website einen gefälschten Beitrag gepostet. Zu diesem Zeitpunkt hat Helen einen Weibo gepostet.

Verteidigung: Betten Sie einen zufälligen Token in die Weibo-Seite ein und der Weibo-Server überprüft den Token-Wert.

4. Clickjacking

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安全配置记录和常见错误的详细总结介绍

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von PHP-Sicherheitsbeispielen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn