PHPのセキュリティ(ユーザーから受け取ったデータの処理)

スクリプトを保護するのに役立つ簡単なトリックについてお話します。

一般規定


ユーザーから受信したデータ ($_POST, $_GET, $_REQUEST, $_COOKIE, $_FILES) 常にチェックし、 異なる注入、XSSなどからだけでなく、入力したデータの正確性も確認します(オンラインストアがある場合)商品の数量が負の整数でないことを確認してください。

ハッカーとしての自分を想像して、あなたがサイトで何をしたかを考えてください。

SQLインジェクション


SQLインジェクション(Eng。SQLインジェクション-「SQL-invasion」)-クエリへの任意のSQLコードの導入に基づいて、データベースを操作するサイトおよびプログラムをハッキングする最も一般的な方法の1つ。 ウィキペディアで詳細を読む
それから身を守るには、以下を使用するだけで十分です:

例:
$sql = "SELECT string FROM test WHERE string='".mysql_escape_string($_POST['str'])."'";

$sql = "SELECT string FROM test WHERE id='".intval($_POST['id'])."'";



Xss


XSS(Eng。Cross Site Spreading-「クロスサイトスクリプティング」)-ハッカー攻撃で使用されるコンピューターシステムの脆弱性の一種。 このような攻撃の特徴は、サーバーを直接攻撃する代わりに、クライアントを攻撃する手段として脆弱なサーバーを使用することです。 XSS攻撃は通常、攻撃者が被害者に提示する特別なURLを作成することにより実行されます。 ウィキペディアで詳細を読む
次の2つの機能を使用して、自身を保護するのに十分です。


PHPインジェクション


PHPインジェクション(英語のPHPインジェクション)-PHPで実行されるWebサイトをハッキングする方法の1つ。サーバー側での外部コードの実行で構成されます。 ウィキペディアで詳細を読む

これは、サーバー側で任意のphpコードを実行できる場合のハッキング方法であり、初心者がユーザーから受け取った変数を渡すinclude()関数のおかげで非常に一般的です。 彼らは、コードinclude($_GET['file'].".php");ていると誤って考えていますinclude($_GET['file'].".php"); そのような注入から救います。 しかし、これはエラーです!!! 攻撃者は「 ya.ru/%00 」(引用符なし)をファイル変数に渡すことができるため、.php拡張子を拒否します

それから保護する簡単な方法があります:

switch ($_GET['file']) {
case '1':
include("hello.php");
break;
case '2':
include("bye.php");
break;
default:
break;
}

おわりに


ここでは、使用する一般的な原則について説明しました。 この記事の補足にご協力いただければ幸いです。

Source: https://habr.com/ru/post/J23025/


All Articles