問題タブ [input-sanitization]

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.

0 投票する
3 に答える
5676 参照

php - 特殊文字は mysql の挿入を中断します

次のような mysql ステートメントがあります。

ご覧のとおり、非常にシンプルで簡単です。問題は、フォームに特殊文字を入力すると、テーブルにデータが挿入されないことです (phpmyadmin を使用して、挿入されたかどうかを直接確認します)。たとえば、コメントテキストエリアにこの値を入力すると、「これはコメントです」という代わりに「あなたの名前は何ですか? : John doe は私の名前です」と入力すると機能します。私が何をすべきかについての提案はありますか?

0 投票する
1 に答える
195 参照

java - RoR で手続き的に生成された Java の文字列のサニタイズ

ユーザー入力により、サーバーがコンパイルして実行するJavaコードを生成するRuby on Railsアプリを作成しています。(理由は聞かないでください;)

問題は、Java で文字列リテラルとして使用する必要がある文字列をユーザーが入力できることです。以前はキャラクターをホワイトリストに登録していましたが、このアプローチではユーザーに十分な柔軟性が提供されていません。ユーザーが文字列を終了してサーバー上で任意のコードを実行できるようにするために、RoR で文字列をサニタイズするにはどうすればよいですか。

0 投票する
1 に答える
287 参照

html - 非表示のフォーム要素のhtmlentities

これは難しい質問のように思えるかもしれませんが、ユーザー入力のサニタイズは絶えず私を混乱させます。そして私は決定的な答えを得たいと思っています。

だからここにシナリオがあります

  1. 顧客はWebフォームに記入します。
  2. PHPは、必須フィールドが適切に入力されていることを確認します。入力されていない場合は、入力が完了するまで顧客は続行できません。
  3. その場合、確認のためにユーザー入力が画面に表示され、入力データも非表示のフォーム要素として保存されます。
  4. 次に、顧客は入力を確認し、非表示の要素はさらに処理するために送信されます。

データは最後の最後までエスケープされるべきではないという原則に基づいて、これはポイント3の非表示要素に格納されているデータにどのように適用されますか(明らかに、この時点で画面に印刷されたデータはhtmlentities()も適用しました)

非表示の要素にhtmlentitiesを使用する必要がありますが、これは技術的には最終段階ではありません。パート4の後、変数をDBまたは電子メールに貼り付ける前に再度使用するためです。

私はこれを完全に間違っているかもしれないことを十分に承知していますので、どんな考えでも大歓迎です。^ _ ^

0 投票する
3 に答える
12065 参照

php - ユーザー入力で json_decode を呼び出すのは安全ですか?

JSON でエンコードされた整数インデックスの配列 => 整数値を Cookie に格納しています。

明らかに、Cookie は他のユーザー入力と同じように簡単に操作できるため、ここに私の Cookie ゲッターの検証を示します。

次に、値を使用する前に、それが配列に存在するかどうかを確認し、ホワイトリストに登録された値のリストに対してテストします。この部分はかなり安全に見えますが、検証の一部であるため投稿しています。

質問に戻りますが、Cookie を直接呼び出しても安全ですか? json_decodeユーザーは Cookie を操作して任意のコードを実行できますか?

私はこれまでSOに関する多くのトピックを読んできましたがunserialize()、コンストラクターを呼び出すため安全ではありませんが、json_decode技術的には安全であることがわかりました。私は彼らのphp.netページを読みましたが、それらはセキュリティに直接対処していません.

私のアドオンはすぐにライブ ベータ版に到達するのでjson_decode、Cookie を直接呼び出しても安全かどうか、または を呼び出す前に何らかの検証を実行する必要があるかどうか疑問に思っていjson_decodeます。私も実行できますがpreg_match、値を使用する前に値のホワイトリストに対してテストしているので、何らかの方法で任意のコードを実行しない限り問題はないはずjson_decodeです。

json_encode有効なJSONでない場合に返されることはわかっていますが、これが正しいアプローチなのか、それとも呼び出す前に何らかの検証を追加する必要NULLがあるのか​​ 疑問に思っていますか?json_decode

これがばかげた質問である場合は申し訳ありませんが、私は Cookie/JSON の経験がほとんどなく、サーバーのデータベースが削除されたことで非難されたくありません。ヘルプ/情報をいただければ幸いです。=]

0 投票する
2 に答える
1600 参照

php - フォームデータのサニタイズ

HTML / CSSを使用してサイトを構築した後、PHPとスクリプトの基本を学んでいます。メールアドレスと名前を収集するためだけに、データベースに送信する簡単なフォームを作成しようとしています。以下は私が使用しているコードの基本です。いくつかの調整がありますが、大きなことは何もありません。私はこのデータをサニタイズする必要があることを知っており、これを行う方法に関する数十の投稿や記事などを読んだことがありますが、escape_stringまたはPHP関数をこれに追加する方法がわかりません。やったと思って何十通りも試しましたが、テストしてみると何の違いもないようです。私はこれをしているのは私の初心者の無知だけだと知っていますが、私は髪を引っ張っているようなものなので、どんな助けも素晴らしいでしょう。

@ rwhite35これは、最終結果がどのようになるかを示していますか?

0 投票する
1 に答える
38 参照

file-upload - ユーザー入力ファイルパスから先頭の「/」を削除し、「../」を禁止することはどの程度安全ですか?

ユーザー指定のファイル名の任意の部分で先頭の「/」を削除し、「../」を禁止しても、「安全」と見なされますか?それとも、それを回避する方法がいくつかありますか(utf-8エンコーディングが思い浮かびます)?すべてのファイルシステムでファイル名を作成できるかどうかは尋ねていません。できるだけ多くのユーザー入力を保持したいと思います。

0 投票する
1 に答える
300 参照

php - PHP; エンコード関数とデコード関数は同じ出力を生成します

一部のユーザー入力をサニタイズします。

$_POST['data'] が設定されています。

これの出力は次のとおりです。

最後の 2 つの結果が同じで、2 番目の結果が投稿されたデータの一部であるのはなぜですか? 最後の 2 つは目的の結果を生成しているように見えるので、どちらを使用すればよいですか?

ありがとうございました。

0 投票する
1 に答える
606 参照

php - PHP:UTF-8(ロシア語、トルコ語、英語)を残してユーザー入力をクリーンアップする方法は?

クリーンなユーザーが偶発的または意図的なジャンクの入力を送信しました。私はこれを行うために次のように書きました。同じ問題に対するより効率的またはより良い解決策を見たいと思います。 注:mysql側では、これらの後にmysqliプリペアドステートメントを使用します。


最初のケース:ユーザーはUTF-8(ロシア語、トルコ語、英語のみが必要)文字と「_」(ユーザーが入力した「username」をクリーンアップするため) を入力できる必要があります。

入力:


これらをきれいにするために、私はこの単純な関数を書きました

これは私が必要なものを返します。



2番目のケース:英語の文字のみが許可されます。無効な文字およびその他のUTF-8文字は削除する必要があります。(これは、ユーザーが入力した「電子メール」をクリーニングするためのものです)

入力:

この部分は電子メール用であり、英語の文字のみを受け入れる必要があるため、クリーンアップおよび検証するために次の関数を作成しました。

経由で呼び出された場合:

必要なものを返します


ps-

この電子メール入力フィールドに完全なUTF-8/RFC準拠は必要ありません。また、電子メールに含めることができるすべての可能な特殊文字を含める必要もありません。私はより制限的で、最初の質問で関数が何をするのかとともに何が必要かを述べたほうがいいです。ここでの考え方は、電子メールを検証することよりも、タイプミスのある文字を取り除くことです。オンラインサイトでは、何も修正せずに、エラーをスローするだけです。


-クリーンメール機能の正規表現を更新して、+文字と-文字を含めました。

0 投票する
1 に答える
122 参照

php - フォーム入力を DOMDocument クラスに直接ロードしても問題ありませんか?

任意の HTML を受け取り、すべてのクラスと ID を収集してページに出力するツールを作成しました。セキュリティが心配です。HTML Purifier を使用して入力をフィルタリングしていましたが、HTML Purifier がサポートしていない HTML5 をサポートする必要があります。

これはツールの要点です:

私の質問は次のとおりです。

誰かがこのような文字列をツールに入れることができるよう'<div '); do_bad_stuff( 'ha_ha_ha'です$doc->loadHTML($html);:$doc->loadHTML('<div '); do_bad_stuff( 'ha_ha_ha');

そのようなおかしなビジネスを入力しようとすると、DOMDocument だけのエラーのように思えますが、悪意のある入力から保護するために何かをする必要がありますか? そうでない場合、なぜですか?

第二に、htmlentities は出力をサニタイズするのに十分ですか?