Javaの最も一般的な面接の質問:モジュール6

Java Web

 

64. JSPとサーブレットの違いは何ですか?

  1. JSP後サーブレットにコンパイル。(JSPは、サーブレットの本質であり、JVMのJavaクラスが識別できなく、JVMのJavaクラスにJSPコード、WebコンテナJSPコードを認識識別することができます)

  2. より良いロジック制御で、ページの表示、サーブレットでのパフォーマンスで、JSPより良いです。

  3. HttpServletRequestオブジェクトによって得られたオブジェクト、およびオブジェクトは、HttpServletResponseのHttpServletを、組み込みのは、組み込みオブジェクトには、サーブレット、JSPのオブジェクトん必要ですがあります。

  4. JSPは、JSPを使用して単純化されたサーブレットでのみ、プログラマがクラスに埋め込まれたJavaスクリプトは、JSPコンテナによって行わどのようにJSP、出力にクライアントの内容を必要に完了する必要があります。サーブレットは、完全なJavaクラスは、このクラスのサービスメソッドは、クライアントへの応答を生成するために使用されています。

 

これは内蔵されているオブジェクト65のjsp?どのような役割をしていますか?

JSPは9ビルトインオブジェクトがあります。

  • リクエスト:クライアントの要求のパッケージ、GETやPOSTリクエストからパラメータを含みます。

  • レスポンス:クライアントへの対応、パッケージエンドサーバー。

  • pageContext:他のオブジェクトは、オブジェクトによって取得することができます。

  • セッション:ユーザーセッションオブジェクトがカプセル化します。

  • アプリケーション:オブジェクトは、サーバーの動作環境をカプセル化します。

  • アウト:サーバーの応答からの出力対象ストリーム出力。

  • 設定:設定は、Webアプリケーションのオブジェクト。

  • ページ:(このJavaプログラムに相当)JSPページ自体;

  • 例外:パッケージページスロー可能例外。


スコープのJSPの4種類について66話?

4つのスコープでのJSPは、具体的には、ページ、リクエスト、セッションおよびアプリケーションが含まれます。

  • ページに関連するオブジェクトと属性のページの代わりに。

  • リクエスト関連オブジェクトに代わって要求を発行したWebクライアントを持つ属性。要求は、Webコンポーネントの複数に、複数のページにまたがることができ、この範囲は、ページ表示に必要な一時データ内に配置することができます。

  • セッションユーザーの代わりに、サーバー関連のオブジェクトと属性とのセッションを設定します。データは、ユーザー自身のセッションに配置する必要があり、ユーザーに関連付けられています。

  • アプリケーション全体、Webアプリケーション関連のオブジェクトと属性の代わりには、それが複数のページ、リクエスト、およびグローバルセッションスコープを含む全体、Webアプリケーション、全体に本質的です。


67.セッションとクッキーの違いは何ですか?

  • HTTPプロトコルにステートレスなプロトコルなので、サーバーが特定のユーザーを識別するために、いくつかのメカニズムを使用する必要があり、利用者の状態を記録する必要があり、このメカニズムは、セッションであり、このようなショッピングカートのような典型的なシナリオ、あなたは下の単一のボタンをクリックしたときステートレスなHTTPプロトコルので、サーバが特定のユーザ、特定のセッションのために作成されるので、ユーザを識別するために使用されると、ユーザのアクションを知っているし、ユーザーを追跡するので、あなたは、いくつかのショッピングカートがあるかを知りませんブック。セッションは、固有の識別子があり、サーバ側に保存されています。セッションの多くは、メモリ、データベースを保存するためのプロセス・サーバーでは、ファイルがあります。クラスタはまた、セッションの転送を考慮しなければならない場合には、大規模なサイトでは、通常、ユーザーセッションを格納するために使用される特殊なセッションサーバークラスタを持って、この時間のセッション情報は、メモリ内にあるようにMemcachedのようなキャッシングなど、いくつかのサービスの利用セッションを置くために。

  • 特定の顧客サービス側を特定する方法について考えてみて?デビューのこの時間クッキー。たびにHTTPリクエストは、クライアントがサーバーのクッキーに対応する情報を送信します。実際には大多数のアプリケーションがセッショントラッキングクッキーを実装するために使用されている場合は、セッションが最初に作成され、サーバはHTTPプロトコルでクライアントを教えてくれます、我々は各リクエストこの後、ここでセッションIDクッキーを記録する必要があります私はあなたが誰であるか知っている、サーバーにセッションIDを送信します。クライアントのブラウザがクッキー無効にした場合、誰かがどのように行うために、尋ねましたか?通常、URL書き換え技術は即ち各HTTP相互作用、セッショントラッキングを使用して、この場合に呼び出される、URLのようなリアSID =パラメータになり、サーバーは、上に付着xxxxxに応じてユーザを識別する。

  • クッキー実際、いくつかのユーザーフレンドリーなシーンでも使用することができ、あなたが特定の着陸を持っていたウェブサイトを想像し、次回はどのように行う、もう一度アカウントのログインを入力したくないですか?サイトを訪れたときに、この情報はクッキー内に記述することができ、Webページのスクリプトがこのメッセージを読むことができる、あなたは自動的にユーザー名を記入するのに役立ち、ユーザーが簡単に見ることができます。また、これは名前のクッキー、ユーザーに少し甘さの原点です。だから、合計する:セッションは、ユーザーのステータスを追跡するために使用され、データ構造サーバに格納され、このデータは、クラスター、データベース、ファイルに保存することができます。クッキーを記録するために、クライアントのユーザー情報を保存するためのメカニズムでありますユーザーに関する一部の情報が、また、セッションを達成する方法。

 

セッションの動作原理についての68話?

実際には、セッションは、ハッシュテーブルがサーバー上に存在するファイルに似ています。そこの中に私たちが必要とする私たちが必要とする情報は、内部から取り出すことができます。これは、ユーザがこのセッションIDを取るサーバーに要求を送信し、ユーザーのキーセッションID、に格納された大きなサイズのマップと似ています。これは、に対応する時間値から削除することができます。

 

69.クライアントの禁止Cookieはセッションがまだ動作可能か?

クッキーとセッションは、一般に二つの独立したものと考えられ、セッションはサーバプログラムの状態を維持するために使用され、そしてクッキーは保留にクライアントプログラムを使用しています。しかし、なぜそれを得るクッキーセッションを無効にすることはできませんか?セッションは、現在の対話対応するサーバセッションを決定するセッションIDであるので、クッキーおよびセッションIDが無効クッキー等価を通過するセッションIDは、セッションがないので、失われました。

クッキーは、ユーザーが方法は以下のとおりであるセッションの使用を、閉じた場合を想定しています。

  1. PHPは自動的にセッションIDを渡し広げるように、「--enable-トランスSID」コンパイル時のオプションを開くには、php.iniの設定ファイル「session.use_trans_sid = 1」を設定するか、[開きます。

  2. 伝統的な価値観によって手動URL、非表示のフォーム転送セッションID。

  3. 手動で拡散処理を呼び出すなどの文書、データベースの形でセッションIDを保存します。

 

70.春のMVCと支柱がある違いは何ですか?

  • 傍受の異なるメカニズム

Struts2のクラスレベルのインターセプタであり、各要求は、アクションを作成し、Struts2のとActionBeanのSpring統合注入範囲は、プロトタイプモデルのプロトタイプである場合、次いでセッターによってプロパティに注入され、ゲッターは、現在のデータを要求します。Struts2のは、要求、応答コンテキストに対応するアクションは、パラメータを受信すると、属性が複数の方法で共有属性パラメータを説明しようとする、受信することができます。アクションのメソッドStruts2のは、URLに対応することができ、そしてそれはすべてのメソッドは、クラス属性を共有して、注釈またはそれ以外の場合は、それぞれの方法を識別することはできません、唯一のより多くのケースになるように設計することができます。

  

SpringMVCレベルインターセプト法、コンテキスト要求に対応する方法は、この方法は、直接、排他的な要求、応答データとは実質的に無関係です。どのように同時にかつURLに対応するそれぞれの方法は、送信パラメータをプロセスに直接注入されることができ、この方法は、ユニークです。ModeMapによってフレームに処理結果を返します。唯一のコントローラを作成するために、Spring統合、SpringMVCコントローラー豆のデフォルトシングルトンシングルトンなので、すべての要求のデフォルトは、財産のない共有があってはならないときは、デフォルトのスコープを変更したい場合は、それは、スレッドセーフであります@Scopeは、修正するために注釈を追加する必要があります。

Struts2のインターセプタインターセプタは、独立したAOPの道である、SpringMVCを独自のメカニズムを持っている、これは設定ファイルにつながっているStruts2のSpringMVCの量よりも大きくなっています。

  • 別の基本的な枠組み

Struts2のフィルタを使用して(StrutsPrepareAndExecuteFilter)実装、SpringMVC(のDispatcherServlet)サーブレットの実装が使用されます。容器が始まった後、フィルターは初期化され、サービスが後でサーブレットよりも、クラッシュ後に停止されます。お電話の際に初期化されたサーブレットでは、最初の呼び出しは、破壊されたサービスの停止をフィルタします。

 

  • 演奏

それぞれに対応するクラスレベルインターセプトStruts2のは、アクションの新しいインスタンスをリクエストする方法は、単一のローディングモードの実施形態豆注入とSpringMVC傍受を基づいているので、全ての属性は、ゼロSpringMVC構成を達成するために、注射値ロードする必要があります。Struts2のよりので、SpringMVCの開発効率とパフォーマンス。

 

  • コンフィギュレーション

春MVCと春はシームレスです。Struts2のよりも、このプロジェクトの管理とセキュリティの高すぎます。

 

どのようにSQLインジェクションを避けるために71?

  1. PreparedStatementの(単純かつ効果的な方法)

  2. 入ってくるパラメータをフィルタリングするために正規表現を使用します

  3. 文字列フィルタ

  4. JSP不正な文字のパケット機能するかどうか、この機能のチェックを呼び出します

  5. JSPページの判定コード

 

72.避けるためにどのようにXSS攻撃は、何ですか?

また、CSSとして知られているXSS攻撃は、クロスサイトスクリプト(の略で、クロスサイトスクリプティング攻撃、ユーザーがサイトを訪れたとき)、原則としては、悪意のある攻撃者は、HTMLコード内のサイトXSSの脆弱性を入力すると、このHTMLコードが自動的に実行されます、攻撃の目的を達成するように。悪意のあるスクリプトを挿入することにより、XSS攻撃でユーザーのブラウザの制御を達成し、取得するためにしながら、XSS攻撃は、/データの目的を削除/クエリを変更達成するために、ユーザ入力としてSQL文に、SQLインジェクション攻撃SQLインジェクション攻撃に似ていますユーザーに関するいくつかの情報。XSSは、XSSはパッシブタイプで、クライアントを攻撃するために使用され、一般的なWebアプリケーションの脆弱性です。

エンコードされた出力に、入力(パラメータおよびURL)フィルタリング:一般的な考え方は、XSSを防止することです。

 

73.避けるためにどのようにCSRF攻撃は、何ですか?

CSRF(クロスサイトリクエストフォージェリ)も中国の名前を呼ばれ、ワンクリック攻撃やセッションライディングとして知られているクロスサイトリクエストフォージェリ一般的には、攻撃者がユーザーのブラウザのリクエストを偽造することができ、彼らはWebサイトにアクセスしているユーザーへのアクセスを認証されたユーザーの実際の操作が離れてコマンドを実行するために受け取ると間違わする標的部位を送り出します。、アカウントを盗む転送、偽のメッセージを送信するために使用します。このような攻撃の実装のサイトに脆弱性検証要求を悪用攻撃者は、サイトがユーザーのブラウザからの確認を要求することができますが、要求は、ユーザの真の希望の運転行動から生じたかどうかを確認することはできません。

どのように回避します:

1.フィールドHTTPリファラーを確認してください

リファラーHTTPヘッダフィールドは、HTTPリクエストの送信元アドレスに記録されます。通常の状況下では、安全なページ要求へのアクセスが制限され、同じサイトから来ていますが、ハッカーのCSRFを実装したい場合は
、彼のみ一般彼自身の工事現場の要求攻撃に。したがって、それは価値リファラー防衛CSRF攻撃を確認することができます。

 

2.コード

ページプラスキー操作コードは、要求を受信した後、バックグラウンドは、CSRF防衛コードによって決定することができます。しかし、このアプローチは非常にユーザーフレンドリーではありません。

 

3.リクエストトークンと認証にアドレスを追加します。

ハッカーが完全にユーザの要求を偽造することができますので、CSRF攻撃が成功することができたハッカーが直接認証情報を知らなくても、ユーザー自身でクッキーを使用することができますので、すべてのユーザ認証情報の要求は、クッキーに存在していますセキュリティ検証を渡します。ハッカーにキー情報を要求に偽造されず、情報がクッキーに存在しないことを特徴CSRFを、抵抗します。要求が正しいトークンまたはトークンではないではない場合トークンランダムにHTTPリクエストのパラメータとして生成され、迎撃サーバ側の確立がトークンを認証するために添加することができる、おそらくCSRF攻撃は要求を拒否すると考えられています。この方法では、リファラーチェックのいくつかのより安全であるユーザがセッションからログアウトした後にトークンが、セッション中に発生し、配置することができ、その後、各要求にトークン、リクエストトークンと比較する、しかし困難メソッドは、パラメータとしてリクエストトークンを結合する方法です。
GETリクエストの後に、トークンが要求アドレスに添付されます場合は、このURLは、httpなった:// URL csrftoken = tokenvalue? 。
POSTリクエストの場合は、最後は<input type =「隠された」名前の形式で追加し 、/ =「tokenvalue」=「csrftoken」value>の参加要求は、パラメータとしてトークンを置くようにします。

 

HTTPヘッダ4.カスタムプロパティを検証

また、このメソッドは、認証トークンのために使用され、その差のための方法は、ここではHTTPリクエストのパラメータとしてトークンに配置されていないということですが、カスタムHTTPヘッダー属性の中でそれを置きます。このクラスでのXMLHttpRequestは、クラスは、すべてのHTTPヘッダーとcsrftoken性、およびトークン値に変換するための1回限りのリクエストであってもよいです。これは、リクエストトークン不便で同じ時間に参加する方法を解くのXMLHttpRequestでアドレスを要求し、ブラウザのアドレスバーに記録されません、他のサイトにトークン漏れを心配しないでリファラーを通過します。

 

                              (終わり)

おすすめ

転載: www.cnblogs.com/xiaofengwang/p/11250170.html