問題タブ [mysql-real-escape-string]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - ODBCに渡す前に入力データをエスケープする正しい方法
私はMySQLとmysql_real_escape_string()の使用に非常に慣れていますが、ODBCを使用する新しいPHPプロジェクトが与えられました。
SQL文字列のユーザー入力をエスケープする正しい方法は何ですか?
addlashes()で十分ですか?
後でではなく、今すぐ入手したいです!
php - それでも逃げるべきですか?$_GET と XSS、SQL インジェクション、およびその他の PHP セキュリティに関する懸念事項
URL 文字列から $_GET を使用してデータを取得し、そのデータを Web ページに表示したり、SQL アクションを実行したりしない場合でも、エスケープ、正規表現、およびその他のセキュリティ コードの使用を検討する必要がありますか? 文字列には任意の文字を含めることができます。
それが理にかなっていることを願っています。
php - PHPの問題implode()とmysql_real_escape_string()の組み合わせ
Implodesとmysql_real_escape_stringの両方を含むMySQLクエリのコードを正しく作成するにはどうすればよいですか?
これは私が持っているコードですが、失敗しています:
ありがとう
php - mysql_real_escape_string() が正しく動作しないのはなぜですか?
mysql_real_escape_string()のドキュメントでは、次のように述べています。
...、接続の現在の文字セットを考慮して、mysql_query() に安全に配置できるようにします
この例で正しく動作しなかったのはなぜですか?
mysql_query("SET CHARACTER SET 'gbk'", $c)
を呼び出す前にによって文字セットを変更mysql_real_escape_string
したのに、なぜこの関数は新しい文字セットを認識しなかったのでしょうか?
mysql - 正規表現を使用してmysql_real_escape_stringを自動的に追加する
query()
基本的にであると呼ばれるメソッドを持つmysqlクラスがありmysql_query()
ます。このメソッドは、次のようなパラメータとしてクエリを受け取ります。
insert into table set field1 = 'value 1', field2 = 'value 2'
また
select id from table where field1 = 'value 1', field2 like '%value 2%'
もちろん、これはあまり良い方法ではありません。すべての値を最初に渡す必要があるためmysql_real_escape_string()
です。
正規表現を使用して、太字のセクションのように、メソッドに情報が渡されるすべてのパターンをキャッチしたいと思います。
insert into table set field1 = '**value 1**', field2 = '**value 2**'
。
問題は、preg_replaceを貪欲にすると、最終的には次のようになることです。
insert into table set field1 = '**value 1', field2 = 'value 2**'
そしてそれが貪欲でなければそれは捕まえるでしょう:
insert into table set field1 = '**value **' 1', field2 = 'value 2'
(ここで、filed1は実際には="value'1"です。
次の例のように、値を区切り文字の間に置くというオプションもありますが、これは私にとって最善の方法ではないようです。
insert into table set field1 = {{value 1}}, field2 = {{value 2}}
次に、「{{」と「}}」の間のすべてのテキストをキャッチして、そのmysql_real_escape_string()
'ed値に置き換えます。
より専門的な方法でこれを行う方法はありますか?
ps:コード内に**が含まれていることをお詫びします、チェックマーク内を太字にする方法がわかりません
php - PHP マジック クォートの質問
これまでに魔法の引用符がオンになっている環境でプログラミングしたことはありません。今、私はそれがあるプロジェクトに取り組んでいます。これは、ユーザーが受け入れたデータの状況を設定する方法です。
そのフィルタリングでは、マジック クォートが有効になっている場合でも、SQL インジェクション攻撃を受けやすいのでしょうか?
私は本当にクエリを壊すあらゆる種類のSQLインジェクションについてのみ心配しています...他のホワイトリスト、 htmlspecialchar() -ingなどは、他の領域のために用意されています。
いくつかの同様の SO の質問を見ると、代わりに魔法の引用符をチェックし、有効になっている場合はデータに対して「stripslashes」を実行し、常にエスケープ機能を実行することをお勧めしているようです。ただし、サイト内の既存のコードはすべてオンになっていると想定しているため、この方法で行うのは少し心配です。
ありがとう!
flex3 - FlexとMySQL:SQLインジェクションを防ぐためのエスケープ
Flex3プロジェクトでZendAMFリモーティングを使用しています。FlexアプリがPHPに送信するパラメーターがSQLインジェクションやその他のセキュリティ問題を引き起こさないようにするにはどうすればよいですか。
$ parameterArrayを安全にするにはどうすればよいですか?これは、文字列と数値の配列です。$ parameterArrayでmysql_real_escape_stringを使用するにはどうすればよいですか?また、htmlspecialcharsを使用する必要がありますか?この場合、どのように使用しますか?安全にするために他に何かする必要がありますか?
PHP:
php - mysql_real_escape_string() は stripslashes() をキャンセルしますか?
SQLに保存される情報をユーザーに入力させています。もちろん、すべての引用符などをエスケープしたいのですが、そのようなものを最終的なhtmlに出力したくありません。
すべての $_POST 変数に対してこの関数を実行しています。有効ですか?
エスケープ文字列とストリップスラッシュが互いに打ち消し合うのが心配ですか?
php - PDO で mysql_real_escape_string を使用する (localhost サーバーへの接続なし)
だから私はかなり妄想的でmysql_real_escape_string()
、PDO を使用しています。私は実際には PDO で準備済みステートメントを使用していないため、入力をサニタイズする必要があります。
自分のサーバーでホストするときは、ローカル マシンに特権のないユーザーを作成して、mysql_real_escape_string()
失敗して変数を空にしないようにします (これはサニタイズです!)。データベースに一致する文字セットがない場合、サニタイズする意味がまったくないため、これはかなり失敗したソリューションであることに気づきましたが、暫定的には機能しました。
現在、私の新しいホストでは、パスワードも特権も持たないデータベース用のユーザーを作成できません...そしてmysql_real_escape_string()
、ローカル マシンに mysql サーバーがないために失敗します。php.ini を編集して、デフォルト データベースのホスト名/ユーザー/パスを設定できません。
私に何ができる?
これを書いているときにブレインストーミングを行っていると、php が構成の実行時の変更を許可するかどうか疑問に思っています...多分... hrm.
編集:うーん... ini_set()
?:O
php - mysql_real_escape_string()を使用する場合
mysql_real_escape_stringを使用する正しいタイミングはいつですか?
isset(mysql_escape_string($ _ GET ['param']))を使用するときに使用する必要がありますか?
$ foo = mysql_real_escape_string($ _ GET ['bar']);を使用するときに使用する必要があります。
ありがとう