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 関数の説明
Docker コンテナは互いに分離されており、相互にアクセスできないことは誰もが知っていますが、依存...
HTML構造 <本文> <div class="wrapper"...
前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...
1. 概要MySQL データベースの日常的な操作とメンテナンスにおいて、ユーザーが誤ってデータを削...
この記事では、MySQL 8.0.15をダウンロードしてインストールするための具体的な手順を参考まで...
会社が現在使用しているソリューションを確認するためにバックエンドにログインしました。使用される FT...
1つ目はjQueryのajaxを使用してリクエストを送信することです ユーザーが登録するときに、リス...
この記事の例では、ふるい抽選を実装するためのミニプログラムの具体的なコードを参考までに共有しています...
1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....
Macノードの削除と再インストール消去 ノード -v sudo npm アンインストール npm -...
JSONObject は単なるデータ構造であり、JSON 形式のデータ構造 ( key-value構...
1. フレックスレイアウト 。父親 { ディスプレイ: フレックス; コンテンツの中央揃え: 中央;...
この記事では、jsを使用してクールな花火効果を実現するための具体的なコードを参考までに共有します。具...
聞く: CSS を使用してハイパーリンクのスタイルを設定しましたが、ホバーしても機能しません。なぜこ...
ブラウザの非overflow:auto要素resize伸縮機能を利用して、JavaScript を使...