ホームページ バックエンド開発 PHPチュートリアル addslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?

addslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?

Aug 04, 2016 am 09:21 AM
mysql php sql SQLインジェクション 注射

1. フォームデータ
addslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?
はフォームデータを示します

2.php
addslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?
で取得したフォームデータが自動で追加されました

3.mysql データ (一番下の行)
addslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?
は mysql に書き込まれませんが、何もありません

4. mysql ソフトウェアによって隠されていると思われます:
addslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?
私もそれを見つけませんでした

公式声明によると
http://www.php.net/manual/zh/function.addslashes.php

addslashes() の使用例は、データベースにデータを入力する場合です。 たとえば、O'reilly という名前をデータベースに挿入するには、エスケープする必要があります。 DBMS 固有のエスケープ関数 (MySQL の場合は mysqli_real_escape_string()、PostgreSQL の場合は pg_escape_string() など) を使用することを強くお勧めしますが、使用している DBMS にエスケープ関数がなく、特殊文字をエスケープするために使用する場合は、この機能を使います。 データをデータベースに挿入するためだけに、追加のデータは挿入されません。 PHP ディレクティブ magic_quotes_sybase が on に設定されている場合、' の挿入は ' でエスケープされることを意味します。

質問:
1. addleshes() 関数はインジェクションを防ぐためにどのようなメカニズムを使用しますか?
2. フォームで送信されたデータに対して htmlspecialchars() を直接使用しますか?
4. SQL インジェクションを防ぐ最善の方法は何ですか?
.

返信内容:

1. フォームデータ


はフォームデータを示しますaddslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?
2.php


で取得したフォームデータが自動で追加されましたaddslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?
3.mysql データ (一番下の行)


は mysql に書き込まれませんが、何もありませんaddslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?
4. mysql ソフトウェアによって隠されていると思われます:


私もそれを見つけませんでしたaddslashes() の目的と、php での mysql インジェクションを防ぐ方法は何ですか?
公式声明によると

http://www.php.net/manual/zh/function.addslashes.php


addslashes() の使用例は、データベースにデータを入力する場合です。 たとえば、O'reilly という名前をデータベースに挿入するには、エスケープする必要があります。 DBMS 固有のエスケープ関数 (MySQL の場合は mysqli_real_escape_string()、PostgreSQL の場合は pg_escape_string() など) を使用することを強くお勧めしますが、使用している DBMS にエスケープ関数がなく、特殊文字をエスケープするために使用する場合は、この機能を使います。 データをデータベースに挿入するためだけに、追加のデータは挿入されません。 PHP ディレクティブ magic_quotes_sybase が on に設定されている場合、' の挿入は ' でエスケープされることを意味します。

質問:
1. addleshes() 関数はインジェクションを防ぐためにどのようなメカニズムを使用しますか?

2. フォームで送信されたデータに対して htmlspecialchars() を直接使用しますか?
4. SQL インジェクションを防ぐ最善の方法は何ですか?
.

ドキュメントに書かれているように、addslashes はパラメータの引用符の前にスラッシュを追加することです。 印刷したデータと同様に、パラメーターの前にもスラッシュがあります。 ただし、データベースにはスラッシュを含めないでください。

addslashes がインジェクションを防ぐ方法は、SQL を記述するときに入力パラメータを直接適用することでインジェクションできる SQL の生成を防ぐことです。

たとえば、$sql = "SELECT * FROM user WHERE id = '$id'";、ここの $id パラメータが意図的に 1 に操作されている場合' OR '1 = 1' ということは、SQL を挿入することを意味するのではありませんか? addslashes就是为参数的引号前加了个斜杠。
也如你所打印的数据,参数前也有斜杠。
但是数据库里就不应该有斜杠呀!
addslashes是如何防注入的,就是防止在我们写SQL时直接套用输入参数而导致产生可被注入的SQL来防注入的。
例如$sql = "SELECT * FROM user WHERE id = '$id'";,如果这里的$id参数被人故意操作成了1' OR '1 = 1',那不就成了注入SQL了吗?
而如果用addslashes加上斜杠,$id中的引号就会被转意,也就不会产生错误的SQLまた、addslashes を使用してスラッシュを追加すると、$id 内の引用符が解釈され、間違った SQL が生成されなくなります。 。ただし、これらのスラッシュはデータが実際に挿入および更新されるときに変換されて戻されるため、これらの結果はデー​​タの書き込みには影響しません。

SQL インジェクションの防止 (入力データベース):
PDO bindingParam または mysqli_stmt_bind_param: SQL インジェクションを回避します。
addslashes: すべての一重引用符、二重引用符、バックスラッシュ、および NUL をエスケープするためにバックスラッシュを使用します。
mysqli_real_escape_string: 特殊なエスケープを行います。
bind_param を使用すると、addslashes、mysqli_real_escape_string、magic_quotes_gpc を使用する必要がなくなります。
例:

リーリー

あなたが言及したhtmlspecialcharsは、HTML出力時のXSS攻撃を防御するものであり、上記のSQLインジェクションに対する防御とは異なります。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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の未来:適応と革新 PHPの未来:適応と革新 Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

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は、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

PHP:それは死にかけていますか、それとも単に適応していますか? PHP:それは死にかけていますか、それとも単に適応していますか? Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

phpmyAdmin接続mysql phpmyAdmin接続mysql Apr 10, 2025 pm 10:57 PM

phpmyadminを使用してmysqlに接続する方法は? phpmyadminにアクセスするためのURLは、通常、http:// localhost/phpmyadminまたはhttp:// [サーバーIPアドレス]/phpMyAdminです。 MySQLユーザー名とパスワードを入力します。接続するデータベースを選択します。 [接続]ボタンをクリックして、接続を確立します。

See all articles