ホームページ バックエンド開発 PHPチュートリアル PHP プログラマーが犯しやすい 10 の間違いを紹介_PHP チュートリアル

PHP プログラマーが犯しやすい 10 の間違いを紹介_PHP チュートリアル

Jul 20, 2016 am 10:57 AM
php 導入 タスク ほとんど プログラマー 間違い

PHPプログラマーは現在、ますます重要なタスクを引き受けるようになっています。 php は優れた Web 開発言語であり、柔軟な言語ですが、私は PHP プログラマーが何度も犯すいくつかの間違いを見てきました。私は、PHP プログラマーが犯しやすい 10 個の間違いのリストを以下に作成しました。そのほとんどはセキュリティに関連しています。あなたがどれだけ間違いを犯したか見てみましょう:

1. HTML エンティティを理解していない

基本的な常識: すべての信頼できない入力 (特にユーザーがフォームから送信したデータ) は出力前に解釈されなければなりません。

<ol class="dp-c"><li class="alt"><span><span class="func">echo</span><span> </span><span class="vars">$_GET</span><span>[</span><span class="string">'usename'</span><span>] ; </span></span></li></ol>
ログイン後にコピー

この例では次のように出力される可能性があります:

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

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

修正方法:

「< この作業を実行する必要があります。」

正しい方法:

<ol class="dp-c"><li class="alt"><span><span class="func">echo</span><span> htmlspecialchars(</span><span class="vars">$_GET</span><span>[</span><span class="string">'username'</span><span>], ENT_QUOTES); </span></span></li></ol>
ログイン後にコピー

2. SQL 入力を無視しないでください

これについては、「The Simplest」という記事で説明しました。 SQL インジェクションを防ぐ方法 (PHP+MySQL で) 質問で、php.ini で magic_quotes がすでに On に設定されているので、これについて心配する必要はない、と誰かが私に言いましたが、すべての入力がそこから来るわけではありません。 $_GET、$_POST、または $_COOKIE わかりました!

修正方法:

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

正しいアプローチ:

<ol class="dp-c"><li class="alt"><span><span><?php  </span></span></li><li><span class="vars">$sql</span><span> = &ldquo;UPDATE users SET  </span></li><li class="alt"><span>name=&rsquo;.mysql_real_escape_string(</span><span class="vars">$name</span><span>).&rsquo;  </span></li><li><span>WHERE id=&rsquo;.mysql_real_escape_string (</span><span class="vars">$id</span><span>).&rsquo;&rdquo;;  </span></li><li class="alt"><span>mysql_query(</span><span class="vars">$sql</span><span>);  </span></li><li><span>?>  </p>
<p><strong>3. エラー HTTP ヘッダー関連関数を使用してください: header()、session_start()、setcookie()<br></strong></p>
<p>この警告に遭遇したことがありますか?」 警告: ヘッダー情報を追加できません - ヘッダーはすでに送信されました [....] </p>
<p>毎回 サーバーから Web ページをダウンロードするたびに、サーバーの出力はヘッダーと本文の 2 つの部分に分割されます。 </p>
<p>ヘッダーには Cookie などの非視覚データが含まれています。常に頭が最初に到着します。テキスト部分には、ビジュアル HTML、画像、その他のデータが含まれます。 </p>
<p>output_buffering が Off に設定されている場合、出力がある前にすべての HTTP ヘッダー関連関数を呼び出す必要があります。問題は、ある環境で開発し、別の環境にデプロイすると、output_buffering 設定が異なる可能性があることです。その結果、リダイレクトが停止し、Cookie とセッションが正しく設定されませんでした。 </p>
<p>修正方法: </p>
<p>出力する前に必ず http ヘッダー関連関数を呼び出し、output_buffering = Off に設定してください。 </p>
<p><strong>4. ファイルに安全でないデータを使用することを要求するか、含める <br></strong></p>
<p> 繰り返しになりますが、明示的に宣言していないデータは信頼しないでください。 $_GET、$_POST、または $_COOKIE から取得したファイルを含めたり、要求したりしないでください。 </p>
<p>例:</p>
<pre class="brush:php;toolbar:false"><ol class="dp-c">
<li class="alt"><span><span>index.php  </span></span></li>
<li><span><?  </span></li><li class="alt"><span class="comment">//including header, config, database connection, etc </span><span> </span></li><li><span class="keyword">include</span><span>(</span><span class="vars">$_GET</span><span>[</span><span class="string">'filename'</span><span>]);  </span></li><li class="alt"><span class="comment">//including footer </span><span> </span></li><li><span>?> </span></li>
</ol>
ログイン後にコピー

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

allow_url_fopen=On の場合、あなたは死んでいます:

次の入力を試してください:

http://www.yourdomain.com/index. … n.com%2Fphphack.php

Web ページに http の出力が含まれていますハッカーはスパムを送信したり、パスワードを変更したり、ファイルを削除したりする可能性があります。想像できるものなら何でも。

修正方法:

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

これは簡単ではありますが、包括的ではない修正です:

<ol class="dp-c"><li class="alt"><span><span><?  </span></span></li><li><span class="comment">//Include only files that are allowed. </span><span> </span></li><li class="alt"><span class="vars">$allowedFiles</span><span> = </span><span class="keyword">array</span><span>(&rsquo;file1.txt&rsquo;,</span><span class="string">'file2.txt&rsquo;,'</span><span>file3.txt&rsquo;);  </span></li><li><span class="keyword">if</span><span>(in_array((string)</span><span class="vars">$_GET</span><span>[</span><span class="string">'filename'</span><span>],</span><span class="vars">$allowedFiles</span><span>)) {  </span></li><li class="alt"><span class="keyword">include</span><span>(</span><span class="vars">$_GET</span><span>[</span><span class="string">'filename'</span><span>]);  </span></li><li><span>}  </span></li><li class="alt"><span class="keyword">else</span><span>{  </span></li><li><span class="func">exit</span><span>(&rsquo;not allowed&rsquo;);  </span></li><li class="alt"><span>}  </span></li><li><span>?> </span></span></li></ol>
ログイン後にコピー

5. 文法エラー

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

6. オブジェクト指向の使用がほとんど、またはまったくない

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

7. フレームワークを使用しない

PHP プロジェクトの 95% は、作成、編集、リスト、削除という 4 つのことを行っていますが、これら 4 つの作業を実行するのに役立つ MVC フレームワークがたくさんあります。彼ら?

8. PHP にすでにある関数がわからない

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

9を使用できます。PHPの古いバージョンを使用してください。

很多程序员还在使用PHP4,在PHP4上开发不能充分发挥PHP的潜能,还存在一些安全的隐患。转到PHP5上来吧,并不费很多功夫。大部分PHP4程序只要改动很少的语句甚至无需改动就可以迁移到PHP5上来。根据http://www.nexen.net的调查
只有12%的PHP服务器使用PHP5,所以有88%的PHP开发者还在使用PHP4.

10.对引号做两次转意

见过网页中出现’或’”吗?这通常是因为在开发者的环境中magic_quotes设置为off,而在部署的服务器上magic_quotes=on. PHP会在 GET, POST 和COOKIE中的数据上重复运行addslashes() 。

原始文本:

<ol class="dp-xml">
<li class="alt"><span><span>It’s a string  </span></span></li>
<li><span>magic quotes on:  </span></li>
<li class="alt"><span>It’s a string  </span></li>
<li><span>又运行一次  </span></li>
<li class="alt"><span>addslashes():  </span></li>
<li><span>It\’s a string  </span></li>
<li class="alt"><span>HTML输出:  </span></li>
<li><span>It’s a string </span></li>
</ol>
ログイン後にコピー

还有一种情况就是,用户一开始输入了错误的登录信息,服务器检测到错误输入后,输出同样的form要求用户再次输入,导致用户的输入转意两次!

希望通过以上内容介绍的十方面,能够给你打击来帮助。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445749.htmlTechArticlePHP 程序员现在越来越承担着中重要的任务。 php 是个伟大的web开发语言,灵活的语言,但是看到php程序员周而复始的犯的一些错误。我做了...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

See all articles