ホームページ  >  記事  >  バックエンド開発  >  PHPのセキュリティ例を詳しく解説

PHPのセキュリティ例を詳しく解説

小云云
小云云オリジナル
2018-03-06 10:27:141892ブラウズ

1. SQL インジェクション

Web フォームの送信に SQL コマンドを挿入したり、ドメイン名やページ リクエストのクエリ文字列を入力したりすることで、最終的にサーバーを騙して悪意のある SQL コマンドを実行させます。

防御: 最初にフィルタリングし、次にパラメータバインディングを実行します。

2.

防御: 入力をフィルターします。

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

3. CSRF

クロスサイトリクエストフォージェリー

原則: Helen は Weibo にログインし、有害なサイトを閲覧し、有害なサイト Weibo Blog に偽の投稿が作成されました。今度はヘレンが知らずにWeiboを投稿しました。

防御: Weibo ページにランダムなトークンを埋め込むと、Weibo サーバーがトークンの値を検証します。

4. クリックジャッキング

クリックジャッキング

原理: おそらく 2 つの方法があり、攻撃者は Web ページ上でそれを覆い、ユーザーを誘導します。 iframe 上で操作する場合、ユーザーはそれを知らずに透明な iframe ページをクリックします。次に、攻撃者は Web ページを画像で覆い、Web ページの元の位置をブロックします。

防御: 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. ファイルのアップロード

原則: さまざまな種類の違法なソフトウェアがアップロードされる可能性があります。

防御: 検出タイプ、検出サイズ。 zip 再圧縮します。解凍するとサーバーが混雑する可能性が高いためです。

7. セッションハイジャック

原則: クライアントとサーバーが通信するとき、ハッカーはパケットをキャプチャしてセッション ID を取得し、最後にハッカーはサーバーと通信します。

ディフェンス: HttpOnly を設定し、セッション ID を時々リセットします。

8. パスワードストレージ

$hashedPassword = password_hash('password', PASSWORD_DEFAULT);password_verify('the wrong password', $hashedPassword); // falsepassword_verify('my super cool password', $hashedPassword); // true
9. ブルートフォースクラッキング

サーバーセキュリティ

2. mysql ルート名を変更する

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

3. root リモートログインを無効にする

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

Webセキュリティ

1. SQLインジェクション

が送信されますWeb フォームに SQL コマンドを挿入するか、要求されたドメイン名またはページを入力します。クエリ文字列。最終的には、サーバーはだまされて悪意のある SQL コマンドを実行します。

防御: 最初にフィルタを適用し、次にパラメータ バインディングを実行します。

2.

防御: 入力をフィルターします。

# 修改 mysql 数据库中的 user 表,然后 flush privileges
vi /etc/ssh/sshd_configPermitRootLogin

3. CSRF

クロスサイトリクエストフォージェリ

原則: Helen が Weibo にログインして有害なサイトを閲覧し、有害なサイト Weibo Blog に偽の投稿が作成されました。ヘレンが知らずにWeiboを投稿したとき。

防御: Weibo ページにランダムなトークンを埋め込むと、Weibo サーバーがトークンの値を検証します。

4. クリックジャッキング

クリックジャッキング

原理:大概有两种方式,一是攻击者使用一个透明的 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。