- また、公開された ASP.NET をプリコンパイルできることも知っています。
- .NET アプリケーションは MSIL にコンパイルされ、Red Gate の .NET Reflector などのツールを使用して任意の .NET 言語に簡単に戻すことができます。
- 購入者がサイトをホストし、コードにアクセスできない ASP.NET サイトを開発して提供したいと考えています。
それを行う方法はありますか?
それを行う方法はありますか?
私の経験では、コードを難読化している人は、苦労する価値のあるコードを生成しません。
しないように伝えてください。決心したリバース エンジニアを止めることはできませんが、それが契約に含まれている場合は、それによって利益を得ている人に対して頼ることができます。
難読化を行うと、開発者だけでなく、コードにプラグインしている顧客にとってもデバッグが困難になります。
それを避けるべきもう 1 つの理由は、「秘密の」ポート、暗号化キー、またはハンドシェイクを含めようとする誘惑です。コードにこれらのいずれかがある場合は、非常に異なるモデルを見つける必要があります。
dll として発行する場合、 .cs/ .vb ファイルを Web サイトで実際に発行するわけではないことを知っておくと安心するかもしれません。これは、設置するのが最も簡単な障害物だと思います。
DLL からコードを取得することはできますが、ソース ファイル自体はそこにある必要はありません。
Web プロジェクトを Web アプリケーションに変換してビルドします。出力はdllになります。これをすべてのメディア ファイル (aspx、gif、png など) と一緒にプッシュすると、ソースは勤勉でない人から隠されます。
それは「難読化」と呼ばれます。それを行う商用製品があります。逆コンパイルを正確に防止するわけではありませんが、プログラムの内部をめちゃくちゃにして、頭や尾を作るのが難しくなります。
特別な状況下でコードが壊れる可能性があることに注意してください。そのため、機能するまでオプションをいじる必要があります。
Dotfuscator は人気のあるツールであり、機能を取り除いた無料のコミュニティ バージョンが Visual Studio に付属しています (ただし、どのエディションかはわかりません)。
単なるアイデアですが、あなたの場合ではないかもしれません:
可能であれば、アプリのどこかで Web サービスを使用してください。分散コードにより、逆コンパイルに使用できるのはクライアント ロジックのみになります。
Manco .NET Licensing Systemを調べてください。ライセンス保護、コード難読化、およびコード暗号化の機能を提供します。ASP.NET アプリケーションは、いくつかの異なる方法を使用して保護できます。ライセンス キーまたは HTTP 要求からのドメイン名を使用します (http://mancosoftware.blogspot.com/2010/10/protect-aspnet-application-using-name. html) などです。
難読化を調べることができます。 Dotfuscatorは、開始するのに適した場所です。
Visual Studio プロジェクト テンプレートを使用して、ASP.NET Web サイトまたはプロジェクト内のすべての aspx/ascx ファイルをプリコンパイルする方法があります。
ScottGu のブログを読む: VS 2008 Web 配置プロジェクトのサポートがリリースされました
展開プロジェクトをコンパイルすると、すべての aspx/ascx ファイルに対して単一のアセンブリが作成されます。
ソース コードを本当に隠したい(判読できないようにしたい) 場合は、専門的な難読化ソフトウェアを使用する必要があります。
私は間違っているかもしれませんが、IISがbinフォルダーからファイルを提供することを確信していません(とにかく私にとってはそうではありません。これは、web.configをダウンロードできないのと同じ方法で設計されていると思います-また、ディレクトリの内容も一覧表示されません)。これが正しければ、ハッカーがサーバーへのファイルシステムアクセスを取得できない限り、ハッカーが最初にdllを取得する方法があるとは確信していません。
単一のdllへのコンパイルに関する上記のアドバイスに従う場合、難読化ツールは必要ないと思います(ファイルシステムにアクセスできる人を心配している場合を除きます。その場合、他の問題があると思います!)
Web.config
DLL として発行した後、IIS によって提供されないパスにそれ (および などの他のサーバー側ファイル) を配置することを忘れないでください。
どのバージョンの VS を使用していますか? VS2005 SP1 には、Web 配置と呼ばれる新しいプロジェクト タイプがあります。ソリューション エクスプローラーで Web サイト名を右クリックすると、[Web 配置プロジェクトの追加] オプションが表示されます。これにより、単一の DLL を作成し、それを参照するように aspx ページを変更する新しいプロジェクトがソリューションに追加されます。
ソリューションをビルドすると、Web 配置プロジェクト フォルダーに、単一の dll を含むバージョンのサイトが作成されます。これをサーバーにコピーし、データベースとファイル システムのアクセス許可 (アップロードなど) を設定すれば、すぐに作業を完了できます。
プロジェクトをバイナリとして発行すると、コンパイラは bin フォルダーに DLL を作成し、すべてのページも作成されますが、コードは含まれず、マーカー ファイルを示す 1 行だけです。したがって、ユーザーがサイトを閲覧するときは、通常どおりページを閲覧します。あなたのページはサーバー側でdllの正しいコードを指します
あなたは正しい道を進んでいます。DLL は大きな助けになりますが、少なくとも一部を取得するために逆コンパイルすることができます。
Dotfuscator のような難読化ツールを使用することは、適切な追加手順です。 この FAQは、難読化ツールを理解するための良い出発点です
重要なのは、自分が何をしているのかを特定することです。コードをデプロイする場合、誰かがコード内でメソッドを呼び出すのを止めるのは非常に困難です。それらが実際のソースを取得できないようにするだけの場合は、そのほうが簡単で、難読化が機能するはずです。
私は常に、Web サイトを DLL に事前コンパイルし、コードをオンラインに含めないことを選択します。これは、匿名ユーザーがコードにアクセスできないことを意味します。
ただし、サーバーへの管理者アクセス権を持つ人々が心配な場合は、彼らがバイナリをほとんど読み取り可能なものに分解する可能性があります.