問題タブ [code-injection]

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 投票する
2 に答える
412 参照

java - javaで注釈付きプライベートクラス属性のコンテナインジェクションはどのように機能しますか?

Bill Burke と Richard Monson-Haefel による Enterprise Java Beans 3.0 の本を読み始めましたが、第 4 章にこのコードがあります。

クラスには、このフィールドにアクセスするメソッドがあります (コンストラクターで設定されることはなく、setter メソッドもありません)。では、コンテナはこのプライベート フィールドを実際のインスタンスでどのように設定するのでしょうか? リフレクションやバイトコードの魔法が起こっていると思います - それはどのように行われますか?

0 投票する
5 に答える
7265 参照

java - Java:リフレクションを使用してフィールドを挿入する最速の方法は何ですか?

Javaリフレクションを使用して(何らかの理由で)構築された多くのクラスがあるとします。ここで、 で注釈が付けられたフィールドに値をポストインジェクトする必要があります@PostInject

私の質問は:リフレクションを使用してフィールドを設定する高速な方法は何ですか?
多くのクラスでこれを非常に頻繁に行う必要があることを忘れないでください。そのため、パフォーマンスが重要です。

私が直感で行うことは、次の疑似コードで示されています。

  • クラスのすべてのフィールドを取得する
    clazz.getFields();
  • @PostInject で注釈が付けられているチェック
    eachField.getAnnotation(PostInject.class);
  • これらのフィールドにアクセスできるようにする
    eachAnnotatedField.setAccessible(true);
  • それらを特定の値に設定します
    eachAnnotatedField.set(clazz, someValue);

残念ながら、すべてのフィールドを取得するのは最も時間がかかります。
最初からフィールドを知っている場合、誰かがフィールドを取得できますか?

注: メソッドを使用してフィールドを設定できるようなインターフェイスをクラスに実装させることはできません。POJOが必要です。

注 2: ポスト フィールド インジェクションが必要な理由: API ユーザーの観点からは、final フィールドを使用できる必要があります。さらに、フィールドのタイプと数が事前に API によって認識されていない場合、インターフェイスを使用してフィールドの初期化を実現することは不可能です。

注 2b: ユーザーの観点からは、最終的な契約は破棄されません。最終的なままです。まず、フィールドが初期化され、その後変更できなくなります。ところで、この概念を使用する API はたくさんありますが、そのうちの 1 つが JAXB (JDK の一部) です。

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

code-injection - UniData の入力のサニタイズ

UniData クエリの入力をサニタイズする機能を提供できる人はいますか? または、削除するもののリストを提供しますか?

0 投票する
5 に答える
316 参照

html - HTMLの奇妙なマークアップ(HTML_ATR HTML_ELM、SYN_ROW、JS_KEYなど)

私はクライアント用のWebサイトを構築しましたが、ご存知のとおり、「私のマシンでは問題なく動作します」:-)クライアントの場所にある複数のマシンで動作します。しかし、(これまでのところ)ElementByIdが見つからないなど、いくつかのエラーが発生する3台のPCがあります。これらのマシンは、IE8を実行している通常の最新のWindowsマシンです。

私のマシンのページのhtml-sourceを、エラーが発生したマシンの1つと比較すると、大量のhtmlが挿入されているように見えることがわかりました。属性とelementID、さらにはjavascriptの周りのDIVSとSPANの負荷:

普通:

注射後:

スクリプトはクラス「HTML_ELM」を使用してSPANタグで囲まれます
タイプはクラス「HTML_ATR」を使用してSPANタグで囲まれ
ます「text/javascript」はクラス「HTML_VAL」を使用してSPANタグで囲まれます

HTML要素のIDでさえこれらのSPANタグ(class='JS_STR')で囲まれているため、ElementByIdが見つからないという問題が発生している可能性があります。

なぜこれが起こっているのかわかりません。また、注入された/タグ(、、)で使用されているこれらの奇妙なクラス名を検索しても、Googleで原因を見つけることがSPANできHTMLませHTML_VALん。HTML_ELMHTML_VAL

ここの誰かがこれを引き起こしている可能性があることを知っていますか?

どうもありがとう、Jurjen。

0 投票する
4 に答える
3061 参照

html - Web サイトでの iframe インジェクション

私のウェブサイトが侵害されました。私のウェブサイトに iframe マークアップを挿入した人がいます。

彼らはどのようにこれを行ったのですか?私のindex.html、index.phpページのみ。しかし、私はこのページへの書き込み権限をブロックしました。

サーバー上の他のページに影響しますか?

これをブロックする他の解決策はありますか?

ありがとうございました

これは私のindex.phpコード<iframe>で、phpスクリプトの後に挿入されます。

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

constructor - 他の非依存のコンストラクター引数を使用したコンストラクターインジェクション

私はIOCコンテナーを初めて使用し、NInjectを使い始めています。

コンストラクターにサービスではなく、IOCコンテナーによってインスタンス化する必要のないパラメーターを持たせたい場合は、どうしますか?

例えば:

その名前がPersonクラスの要件であると想像してください。したがって、Personが常に名前を持つようにするには、その名前をコンストラクターに渡す必要があります。

NInjectを使用してPersonのインスタンスを取得するにはどうすればよいですか?名前は、アプリのどのビットが新しいPersonを作成するかによって渡される必要がありますが、IOCコンテナはIPersonRepositoryを渡す必要があります。

代わりにプロパティを使用して名前またはリポジトリのいずれかを挿入できることは理解していますが、これはクリーンなソリューションではありません。プログラミング言語のセマンティックパワーの一部が失われています。

0 投票する
5 に答える
170 参照

php - この有効性チェックは脆弱ですか?

GETリクエストを介して他のファイルを含むページにこのコードがあります:

ここ$allowで、含まれる有効なファイルである許可された文字列のリストを含むハードコードされた配列です。コードインジェクションを許可する明らかな何かが欠けているのでしょうか、それともこのチェックで十分でしょうか?

0 投票する
5 に答える
1063 参照

jquery - JQuery の "Load" 関数を使用して挿入された DIV を配置する

データベースからいくつかの情報を取得し、それを DIV に入れ、そのすべてを自分のページに挿入しています。私が抱えている問題は、ロードが完了した後に新しく挿入された DIV を配置することです。

これが私のjQueryです:

load-content クリック イベントの後、getJSON コールバック関数内、load-content クリック イベントの前、および load-content クリック コールバック関数内に、quick-info DIV の load イベントを配置しようとしました。私はまだそれを機能させることができません。

ロード機能で何が間違っていますか?

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

c++ - C++Dllインジェクション

これで本当にあなたの助けをいただければ幸いです。

私はDllをリモートプロセスに注入し、その中でいくつかの変更を加えようとしていますが、現在直面している問題は、これを実行する方法がわからないことです。

まず、これまでに開発したコードを次に示します
。dllmain.cpp

満たす条件に応じてメッセージボックスを表示するだけです。ここで、DLLに実行させたいのは、リモートプロセスに挿入された後、メモリの場所を書き込んでその値を変更することです。

データ型:Unsigned Short Int
メモリの場所:0041D090

すべてが明確であることを願っています。今しばらくお待ちいただきますようお願いいたします。ご協力をよろしくお願いいたします。

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

.net - プロセス作成の検出

サードパーティの.NETアプリケーションのプロセス作成を検出する必要があります。私の目標は、このアプリケーションの機能を強化するためにプラグインDLLを挿入することです。アプリケーションの初期化イベントをキャッチできるように、これをできるだけ早く注入したいと思います。このプロセスがいつ作成されたかを検出し、Mainが呼び出される前にDLLを挿入する方法はありますか?