110

少し前に、クエリをパラメータ化し、HTML をデータベースに安全に保存するために、PDO を使用するようにコードを変更するよう提案されました。

さて、主な問題は次のとおりです。

  1. http://php.net/manual/en/ref.pdo-mysql.phpを見ましたが、その文字列をどこに置くべきか本当にわかりません$ ./configure --with-pdo-mysql...

  2. 私が構築しているサイトでは、実際には 1 ページ分の PDO しか必要ありません。書き直すことを検討するかもしれませんが、しばらく時間がかかり、ページをすぐに実行する必要があるため、MySQL を完全にオフにすることはできません。PDO をインストールした場合でも、mysql_*ハンドラーを使用できますか?

問題のサーバーは、PHP バージョン 5.4.6-1ubuntu1 および Apache/2.2.22 (Ubuntu) を実行しています。必要に応じて、phpMyAdmin データベースも実行しています。

4

6 に答える 6

193

Ubuntu では、必要な PDO パーツを apt からインストールできるはずです。sudo apt-get install php5-mysql

PDO と mysql_ の同時使用に制限はありません。ただし、DB への 2 つの接続を作成する必要があります。1 つは mysql_ を使用し、もう 1 つは PDO を使用します。

于 2012-11-14T08:14:48.457 に答える
25

それは良い質問ですが、あなたは自分が読んだものを誤解しているだけだと思います。

PDOをインストールする

これは、独自のPHPコードをコンパイルする場合にのみ./config --with-pdo-mysql実行する必要があるものです。パッケージマネージャーを使用してインストールする場合は、JanyHartikainenによって提供されたコマンドラインを使用する必要があります。sudo apt-get install php5-mysqlsudo apt-get install pdo-mysql

mysql_との互換性

mysql_が実際に推奨されていないという事実は別として、どちらも独立しています。PDOを使用する場合、mysql_は関係ありません。また、mysql_を使用する場合、PDOは必要ありません。

コードの行を変更せずにPDOをオフにすると、問題は発生しません。しかし、PDOに接続してクエリを作成し始めたので、それを維持してmysql_をあきらめる必要があります。

数年前、MySQLチームはMySQLiに移行するためのスクリプトを公開しました。カスタマイズできるかどうかはわかりませんが、公式です。

于 2012-11-14T08:19:49.730 に答える
9
  1. PDO は PHP データ オブジェクトの略です。
  2. PDO_MYSQL は、データ オブジェクト (データベース) とユーザー入力 (「コード ビハインド」と呼ばれるユーザー インターフェイスの下の層) の間のインターフェイスを実装し、データ オブジェクトである MySQL データベースにアクセスするドライバーです。

これを使用する目的は、ユーザー インターフェイスとデータベースの間に追加のセキュリティ層を実装することです。このレイヤーを使用すると、データ構造に挿入する前にデータを正規化できます。(大文字は大文字で、先頭または末尾にスペースはなく、すべての日付は適切に形成されています。)

しかし、これにはいくつかのニュアンスがあり、あなたが気づいていないかもしれません.

まず、これまではおそらくすべてのクエリを URL に似た形で記述し、URL 自体を使用してパラメーターを渡してきました。PDO を使用すると、これらすべてがユーザー インターフェイス レベルで実行されます。ユーザー インターフェイスがボールを PDO に渡し、PDO がボールをフィールドに運び、7 ポイントの TOUCHDOWN のためにデータベースに植えます。彼は 7 ポイントを獲得しました。 .

データレイヤーを使用して、SQL インジェクションに対してサイトを強化することもできます。データベース自体と対話する唯一の「プレイヤー」であるこの中間層を使用することで、これがいかに安全であるかがわかるはずです。インターフェイスからデータレイヤーからデータベースへ、データレイヤーからデータベースへ、データレイヤーからインターフェイスへ。

と:

コードを書く際にベスト プラクティスを実装することで、結果に非常に満足することができます。

追加のソース:

Re: URL の MySQL 関数 php dot net/manual/en/ref dot pdo-mysql dot php

Re: 3 層アーキテクチャ - アプリケーションにセキュリティを追加する https://blog.42.nl/articles/introducing-a-security-layer-in-your-application-architecture/

Re: UML を使用したオブジェクト指向設計 これについてもっと知りたい場合は、市場で最高の本です。Grady Booch は UML の父でした http://dl.acm.org/citation.cfm?id=291167&CFID =241218549&CFTOKEN=82813028

またはbitmonkeyで確認してください。そこにはきっと多くのことを学べるグループがあります。

>

用語が実際に何を意味するかを知っていれば、何も学ぶ必要はありません。

>

于 2013-08-27T13:22:49.250 に答える