Tomcat は、Java Community Process を通じて Sun が開発した、広く使用されているサーブレットおよび JavaServer Page (JSP) テクノロジの公式リファレンス実装である HTTP サーバーです。サーブレットと JSP テクノロジは、HTTP サーバー アプリケーションの構築に使用されます。サーブレット テクノロジには、アクセス セキュリティ、セッション管理、スレッド制御など、多くの機能が追加されています。 JSP テクノロジーは、動的に生成された HTML ページを処理する簡単な方法を提供します。これらの HTML ページは、実行時間を短縮するためにサーブレットに直接コンパイルされます。セキュリティを確保するための上記の 2 つのテクノロジに加えて、Tomcat パラメータを構成してセキュリティを強化することもできます。 セキュリティ設定: 1. webappsディレクトリ内のすべてのファイルを削除し、tomcat管理インターフェースを無効にします。
2. tomcat-users.xml ファイル内のすべてのユーザー権限をコメント化または削除します。 3. バージョン情報を非表示にしてconf/server.xmlを変更する 3. ユーザーの質問: nginx と httpd は、ルート ユーザーを使用してポート 80 のガードを開始し、子プロセス/スレッドは setuid() および setgid() 関数を通じて通常のユーザーに切り替わります。つまり、親プロセスの所有者は root ユーザーであり、子プロセスとマルチスレッドの所有者は非 root ユーザーです。このユーザーにはシェルがなく、ssh およびコンソール経由でシステムにログインすることはできません。 Tomcat の起動にのみ使用できるユーザーを作成します。
ポートマッピングを作成し、ポート80にアクセスするときにポート8080を呼び出す
リダイレクトをキャンセル:
4. 戦争の自動展開をオフにする vim conf/server.xml 5. 404 に表示されるバージョン情報を非表示にします。 lib 内の catalina.jar を解凍し、jar xf catalina.jar を実行します。
6. tomcatのシャットダウンコマンドを変更する Tomcat インスタンスを直接シャットダウンできる管理ポートは、server.xml で定義されます。 Telnet 経由でポートに接続した後、SHUTDOWN (デフォルトのシャットダウン コマンド) を入力して Tomcat インスタンスをシャットダウンできます (この時点でインスタンスはシャットダウンされますが、プロセスはまだ存在することに注意してください)。 Tomcat のポートはデフォルトで閉じられるため、手順は非常に簡単です。デフォルトのポートは 8005 で、コマンドは SHUTDOWN です。 close コマンドをもう少し複雑に変更する必要があります。 またはポート8005を無効にする
7. tomcatとプロジェクトユーザーを分ける Tomcat が Web シェル プログラムに埋め込まれるのを防ぐには、プロジェクト ファイルを変更します。したがって、Tomcat をプロジェクト所有者から分離して、ハッキングされた場合でもプロジェクト ファイルを作成および編集できないようにする必要があります。 8. conf/web.xmlに次の設定を追加します。 9. カスタムエラーページ web.xml は特定のアプリケーションの下にあり、このアプリケーションの 404 を処理する必要があります。ただし、http://localhost/ は tomcat 独自のアプリケーションにアクセスするため、web.xml 構成は webapp/Root/ の下のアプリケーション内に構成する必要があります。 webappsディレクトリにerror.jspファイルを作成します。 <%@ ページコンテンツタイプ="text/html; charset=UTF-8" %> <%@ ページインポート="java.io.*" %> <%@ ページインポート="java.util.*" %> <html> <ヘッダー> <title>404 ページ</title> <本文> <前> <% 列挙<文字列> attributeNames = request.getAttributeNames(); (attributeNames.hasMoreElements()) の間 { 文字列 attributeName = attributeNames.nextElement(); オブジェクト属性 = request.getAttribute(attributeName); out.println("request.attribute['" + attributeName + "'] = " + attribute); } %> </pre> exception.jsp ファイル <%@ ページ contentType="text/html; charset=UTF-8" isErrorPage="true" %> <%@ ページインポート="java.io.*" %> <html> <ヘッダー> <title>例外ページ</title> <本文> <hr/> <前> <% response.getWriter().println("例外: " + 例外); if(例外 != null) { response.getWriter().println("<pre>"); 例外.printStackTrace(response.getWriter()); レスポンスのgetWriter().println("</pre>"); } 回答 e.getWriter().println("<hr/>"); %> ブラウザでカスタム エラー ページをテストします。 セッションタイムアウトを定義し、ディレクトリリストを禁止する さて、この記事はこれで終わりです。お役に立てれば幸いです。 以下もご興味があるかもしれません:
|
<<: プロジェクトを素早く構築するためのvite+vue3.0+ts+element-plusの実装
>>: MySQL データベースの型変換のための CAST 関数と CONVERT 関数の説明
最近、イントラネットポータルを修正していたときに、フィルターを使用する必要がある箇所に遭遇しました。...
目次序文仮想リストとは何ですか?デモ効果準備スクリーンの高さとボックスの高さ最適化要約する序文人気の...
ダウンロードとインストール環境変数の設定インストール環境変数の設定確認基本的な描画の紹介グラフディグ...
目次1. はじめに2. 原則III. 実践3.1 インデックスプッシュダウンを使用しない3.2 イン...
なぜテキストエリアについて具体的に言及するのでしょうか?なぜなら、textarea ノードは実際には...
HTML イベント リスト一般イベント: onClick HTML: マウスクリックイベント。主にオ...
Node の研究と応用を通じて、NodeJS はシングルスレッド、イベント駆動型、非ブロッキング I...
MySQL バージョン 5.5 および 5.6 を標的とする Riddle 脆弱性により、中間者攻撃...
序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...
1. Dockerコンテナ間の相互接続Docker は現在、軽量の仮想化ソリューションとなっています...
Netease Kanyouxi公式サイト(http://kanyouxi.163.com/)(棚...
目次開発中に発生した問題解決具体的な実装実績まとめバーチャルリストは、スクロールコンテナ要素の表示領...
このキーワードどのオブジェクトが関数を呼び出しますか? また、関数内の this はどのオブジェクト...
ネイティブJavaScriptでスキニングを実装するための具体的なコードは参考までに。具体的な内容は...
この記事の例では、VUEコンポーネントに基づいて都市リストエフェクトを実装するための具体的なコードを...