2

特定のユーザーがいくつかのフィールドに入力できるようにしたいと考えています。これにより、(新しい) php ファイルが作成されます。(新しい) ファイルは、単純な配列値を含む言語ファイルになります。

$lang['example'] = 'text for example';

基本的に、ファイルに各行を入力するだけで、すべてが壮大に見えます。ただし、入力をフィルタリングする方法を知っておく必要があります。これにより'"および同様のものが文字列を壊して潜在的なインジェクションのスペースを開けないようにすることができます。

php ではコードのスタイルを設定する方法がたくさんあるaddslashes()ため、この件に関して a で十分かどうかはわかりません。

入力をフィルタリングして、php ファイルの文字列にできるようにするにはどうすればよいですか?

データベースのフィルタリングだけで、この問題に関する他の質問は見つかりませんでした。

追加情報:
これらのボックスに html は必要ありません。'およびを処理できる必要があり"ます。実際の問題は、次のようなことができるかどうかです。

$lang['example'] = 'hackkyyyyy
>>>
// do evil stuff
<<<
';

つまり、別の方法で、'または"phpで文字列を壊すことができますか?

4

3 に答える 3

0

それは、保護したい対象と、コードが悪用される可能性によって異なります。私の頭の上からかなりの数の方法があります:

  1. あなたの質問で言ったように、addslashes()
  2. 削除したいアイテムごとに str_replace()
  3. いくつかの変数によっては、filter_var() が役立つ場合があります。

お役に立てれば。

于 2012-07-06T11:50:34.450 に答える
0

通常、私は var_export を使用します。

file_put_contents("temp.php",'<?php'. var_export($_POST,true));

配列が必要な場合:

$a = include "temp.php";
于 2012-07-06T12:03:50.590 に答える
0

ユーザーにフォームへの入力を許可すると、フォームの値が Web ページにエコーされますか? PHP フィルター関数を単純に使用して入力をサニタイズし、必要に応じて特殊文字をエンコードできない理由がわかりません。

また、データベースの入力検証/サニタイズがここで適用されない理由もわかりません。誰かが知っていて教えてくれるかもしれません...

ところで。本 PHP Object Oriented Solutions で使用されている David Power のユーザー入力検証クラスには非常に満足しています。本を購入する (またはライブラリにアクセスする) と、すぐにコードを使用できるようになります。

于 2012-07-06T11:58:02.723 に答える