問題タブ [code-security]
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.
.net - .net コード (知的財産) を保護することは不可能ですか?
私は JavaScript をよく使っていましたが、雇用主を悩ませていたのは、ソース コードが簡単に盗めないことでした。難読化しても、実際には何の役にも立たなかったのです。有能な開発者であれば、必要に応じてそのコードを読み取ることができることは誰もが知っていたからです。
JS スクリプトは 1 つの問題ですが、IP (知的財産) に何百万ドルも投資している SOA プロジェクトはどうでしょうか。私は .net、特に C# が大好きですが、最近、「このコンパイル済みプログラムをクライアントに渡した場合、クライアントの開発者はリバース エンジニアリングを行うことができますか?」という質問に再び答えなければなりませんでした。私はコードを難読化するために最善を尽くしましたが、別の熱心な C# 開発者がコードを理解するのにそれほど時間はかからないことはわかっていました。
.netコードを保護することは不可能ですか?
私が持っている考慮事項は次のとおりです。
- 通常のネイティブ実行可能ファイルでさえ元に戻すことができますが、すべての開発者がこれを行うスキルを持っているわけではありません。ネイティブ実行可能ファイルを逆アセンブルするのは、.net アセンブリよりもはるかに困難です。
- 難読化はこれまでのところしか役に立ちませんが、少しは役に立ちます。
- .net で記述されたものは比較的簡単に IP が盗まれるという Microsoft の公の認識を見たことがないのはなぜですか? マイクロソフトのサイトで対策トレーニングの断片を見たことがないのはなぜですか? VS にオプション コンポーネントとしてコミュニティ難読化ツールが付属しているのはなぜですか? ここで砂の中に頭を抱えているだけかもしれませんが、ほとんどの開発者の優先順位リストで正確に高くはありません.
- .net の将来のバージョンで私の懸念に対処する予定はありますか?
私は .net をノックしているわけではありませんが、現実的な回答をお願いします。ありがとうございます。質問は主観的でコミュニティとしてマークされています。
.net - カスタムCodeAccessSecurityAttributeを作成すると、コンパイル時に例外が発生します
WCFサービスの承認を処理するためのカスタムCodeAccessSecurityAttributeを構築しています。私はそのようにクラスAを構築しました:
また、コンパイル時にこのエラーが発生します。
少し遊んだ後、エラーなしでコンパイルされる次のサンプルを思いつきました。
SecurityAction列挙型がクラスAのパブリック側を直接参照していないためですが、私が理解できないのは、クラスBではなくクラスAメソッドを実行できるようにする方法です。
dll - c# dll 暗号化
ASP.NET ページで使用される C# コードを暗号化する必要があります。したがって、コンパイルして DLL ファイルを作成するときは、DLL ファイルを暗号化する必要があります。DLLファイルを暗号化する方法を教えてください...
.net - MethodAccessException
アプリケーションのインストール中に、VB.NET (2.0) インストーラー クラスがアプリケーション サーバーのインストール診断に使用するアンマネージド アセンブリ (暗号化機能) があります。問題は、メソッドが呼び出されるたびに MethodAccessException 例外がスローされることです。アプリケーション自体 (Windows 2.0) 内でメソッドを呼び出すと、たとえば、他のアプリケーション アセンブリの任意の形式で、完全に信頼できるものとして呼び出しが受け入れられます。ただし、インストーラー クラス (カスタム アクション) が呼び出しを行うと、アンマネージ アセンブリはそれを許可せず、例外をスローします。caspol ツールについていくつか調査しましたが、問題を解決するのに十分なコード セキュリティを把握できませんでした ありがとうございます。
php - PHP コードの保護。ヒントが必要
コードをionCubeでエンコードしたい。しかし、ユーザーがエンコードせずにクラックするのを防ぐ方法が正確にはわかりません。
だから私はいくつかのヒントが必要です。
私のプロジェクトは MVC です。
すべては index.php で始まり、core.php を呼び出して実行されます。
ファイルをどのように含める必要がありますか。ファイルが呼び出されたときにそれが元のファイルであることを確認するにはどうすればよいですか?
関数名などを出力するPHP関数がいくつかあることは知っています。これを防ぐ必要があります。
ユーザーは別のファイルから index.php ファイルをインクルードし、使用するような変数を取得しようとしますvar_dump($_GLOBALS);
.net - .NETの「セキュリティチェック」を実行すると、セキュリティエラーが発生する可能性がありますか?
私はコードのスニペットを持っています:
そのFxCopは窒息します:
CA2122:リンク要求のあるメソッドを間接的に公開しないでください
解決策:LinkDemandを持つ
MyMethod()
呼び出し。 この呼び出しを行うことにより、は間接的にユーザーコードに公開されます。DirectoryEntry.AuthenticationType.set(AuthenticationTypes)
DirectoryEntry.AuthenticationType.set(AuthenticationTypes)
情報:LinkDemandによって保護されているメソッドを、セキュリティチェックを実行しないメソッドでラップしないでください。LinkDemandは、呼び出しスタック内のすべての呼び出し元のアクセス許可をチェックするのではなく、直接の呼び出し元のアクセス許可をチェックします。この場合、ラッパーメソッドの権限がチェックされます。ラッパーメソッド自体が、コールスタックの上位にある呼び出し元のアクセス許可をチェックしない場合、悪意のあるコードが、アクセス許可がなくても、ラップされた関数を実行できる可能性があります。」
この問題を「修正」するために、どこかに何かを追加することにしました。ただし、現在顧客に対して機能しているコードが自発的に顧客に対して機能しなくなる場合は、追加できません。
注:何を追加するのか、どこに追加するのか(FxCopにはその情報は含まれていません)、行き止まりの場合はコードセキュリティの秘密の世界を深く掘り下げたくありません。
に「セキュリティチェック*」を追加するとMyMethod
、現在動作しているコードが動作しなくなる可能性はありますか?
私は、誰かが許可を持っていない場合、今書かれているように、コードは機能しないと思います。言い換えると:
誰かが正しい「許可」を持っていない場合、すでに失敗します。コールスタックの上位に「セキュリティチェック」を追加しても、その事実は変わりません。障害をより早くトリガーするだけです。その場合、セキュリティチェックを追加しても問題ありません。
一方、次の場合:
現在は動作しますが
失敗し始めます、そして私はそれを本当に追加することができません。
特に誰もが使用するライブラリコードでは。
私がこれを自分でテストできない理由は、問題が発生する状況を再現する方法を誰も知らないからです。
これは、ほとんどの人がユーザー名とパスワードを使用してADに接続し、プロパティを読み取ろうとして、ActiveDirectoryに対して資格情報を確認する場合と似ています。ユーザー名/パスワードが正しい場合でも、プロパティの読み取りが許可されない場合があります。その失敗のケースを再現するようにActiveDirectoryを構成することを私以外の誰も知らないことを賭けたいと思います。
私の場合、コードのセキュリティが失敗するように設定する方法を誰も知らないと思います。
obfuscation - WCF プロキシ クラスの難読化
Dotfuscator を使用して WCF プロキシ クラスを難読化する方法 Dotfuscator Pro Edition Trial を Web サイトからダウンロードしました。app.exe ファイルを難読化しました。すべてが適切に難読化されましたが、WCF プロキシ クラスは難読化されませんでした。(私はexeをILDASMしました)。
WCF プロキシ クラスがアプリケーションの構造を公開しています。Dotfuscator アプリケーションで不足している設定はありますか?
WCF サービス プロキシ クラスを非表示にするより良い方法はありますか?
c# - C# で Reflection を呼び出すユーザー コードを回避する
現在教えているコースの自動「評価者」を実装しています。全体的な考え方は、すべての学生がいくつかのアルゴリズムを実装した DLL を配布するというものです。私の評価者は、Reflection を使用してこれらすべての DLL をロードし、学生の実装を見つけて、トーナメントで評価します。これらのアルゴリズムはすべてブラックボックス オプティマイザーであり、次のインターフェイスを実装します。
Function
(少なくとも関連部分)のクラス定義は次のとおりです。
ご覧のとおり、Function
これらのメタヒューリスティックにインスタンスを渡す必要があります。これらの機能は自分で実装しています。それらのほとんどは、ある意味でランダムです。つまり、関数コンストラクターでランダムな最適点を選択します。そのためxopt
、クラスにフィールドが表示されます。問題は、生徒がリフレクションやその他の手法でxopt
またはフィールドにアクセスできないようにしたくないことです。 fopt
.
したがって、一般的な質問は次のとおりです。動的にロードしたコードでリフレクションの使用を禁止する方法はありますか、または他の意味で、このコードがプライベート フィールドにアクセスすることを禁止する (チート) 方法はありますか。
前もって感謝します。
.net - System.Security.Permissions.DataProtectionPermissionAttribute の使用
このクラスを実際のアプリケーションで使用したことがありますか? 役に立つシナリオを想像できますか? MessageBodyMemberAttribute
WCFではデータの整合性/暗号化を制御する必要があり、それらが何らかの形で関連しているかどうか疑問に思っているので、私は尋ねています。
asp.net-mvc - サーバーアプリケーション用のFastCGI、ASP.NET MVC、およびWebフォームの中で最も高速で安全なもの
Webサイトのウィジェットとしてフロントエンドを持ち、サーバーのバックエンドロジックを備えた自動チャットアプリケーションを構築する必要があります。主な目的は、サーバーを通信ポイントとする場所に座っているチャット担当者とのクエリを解決するためのインターフェイスを顧客に提供することです。利用可能な人がいない場合、アプリケーションは文字列を解析し、データベースをチェックしていくつかの回答を提供しようとします。
私はC++で非常に良い経験があり、Javaで少し経験があります。アプリケーションの主な関心事は、ソースコードのセキュリティと最高の効率です。
サーバー側から直面している制限は、IISで実行する必要があり、サポートされているスクリプト言語はPHPv5、ASP、ASP.NET、およびFastCGIのみであるということです。
グーグルでリバースエンジニアリングが可能であり、新しい言語を学ぶのにかなりの時間がかかることがわかったので、PHPには行きません。
FastCGIを使用することをお勧めします。これは、私の要件を正確に満たすためですが、C++または任意の優れたチュートリアルを使用してWindowsでコンパイルする方法を見つけることができません。FastCGI開発に関連してグーグルで見つけた結果のほとんどはLinuxまたはWindows用のPerlに関するものでした。また、Windowsプラットフォームでコンパイルする方法を見つけることができません。
現在、ASP.NETを使用することを余儀なくされています。これは、インタープリター言語であり、インタープリター言語はリバースエンジニアリングに弱い傾向があるため、最後のオプションになります。
だから誰かが私にそれをどうやってやるのか提案できますか?FastCGIを使用する方法がない場合は、特定の状況でMVCとWebFormsのどちらが適しているかを提案してください。私は両方に不慣れで、2週間以内に申請を完了する必要があります。