問題タブ [defensive-programming]

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.

0 投票する
7 に答える
14415 参照

java - Erlangのlet-it-crash哲学-他の場所に適用できますか?

Erlang(またはJoe Armstrong?)のアドバイスは、防御的なプログラミングを使用せず、プロセスをクラッシュさせないようにします(残骸を追跡しようとする不必要な警備員でコードを汚染するのではなく)。長年にわたるエラー処理への取り組み!

私が疑問に思うのは、このアプローチはErlangのようなプラットフォームにのみ適用できるのでしょうか?Erlangにはプロセス監視ツリーのシンプルなネイティブサポートを備えたVMがあり、プロセスの再起動は非常に高速です。トップレベルの例外ハンドラー、エラーコード、nullの結果などで自分自身を悩ませるのではなく、監視ツリーの再作成に開発努力を費やす必要があります(Erlangの世界にいない場合)。

このアプローチの変更は、(たとえば).NETまたはJavaスペースでうまく機能すると思いますか?

0 投票する
2 に答える
665 参照

security - ウイルス対策のような自己防衛を処理する

私は防御システム、ウイルス対策アンチマルウェアなどのプログラムを作成しています。また、テイストマネージャーからプロセスを強制終了することでプロセスを防御することに問題があります。私はいくつかのアンチウイルスをテストしましたが、彼のプロセスを強制終了することはできません。私はサービスでそれらを止めることができるだけです。プログラムのためにこの防御を作成するにはどうすればよいですか。ありがとう!

0 投票する
4 に答える
58 参照

user-interface - 無効な GUI オプションに追加のチェックを追加することは良い習慣ですか?

私は次のことを指しています。

そのチェックを追加すると、プログラムが操作を実行しないようになりますが、バグを隠していると見なすこともできます (some_button_click() はまったく実行されていないはずです)。

それで、あなたはそれについてどう思いますか?それは安全なコーディング方法ですか、それともバグを隠していますか?

0 投票する
1 に答える
367 参照

static-analysis - Parasoft ルールウィザード

SIL4 アプリケーションで防御的プログラミングのトークン パッシングをチェックする静的ルールを作成しようとしています。

ルールは次のとおりです。「各関数には、最後のパラメーターとして const uint_32 が必要です」

すなわち:

私を助けてくれる人はいますか?暗闇で手探りしてる

0 投票する
2 に答える
266 参照

cocoa - Cocoa UI と一般的なフレームワーク要素は、悪意のある攻撃からどの程度保護されていますか?

これまでのところ、全体的なセキュリティの考慮事項についてはほとんど気にしていませんでした。なぜなら、私はプロモーション用で重要性の低い iPhone アプリだけを開発してきたからです。

しかし、現在、私は Mac アプリケーションに取り組んでいます。このアプリケーションは機密性の高いユーザー情報を扱っているため、この問題についてもう少し検討する必要があります。

データを物理的な形式 (ディスク上) で保護するために注意を払う必要があることはわかっていますが、たとえば暗号化するなどして、アプリケーションの通常の使用中にデータがメモリに常駐している間、データがどの程度安全なのか疑問に思います。

NSTextField
や Core Data などのフレームワーク要素のみに基づいて構築されている限り、アプリケーションはどの程度安全ですか?

Cocoa の入力要素は、悪意のある攻撃に対してどの程度敏感ですか? Core Data を使用して保存されたセーブデータを保護する最善の方法は何ですか?

0 投票する
1 に答える
383 参照

ios - Improving setValueForKeyPath robustness

I have created an extension to NSObject to allow for object properties to be set from data contained in a PLIST or dictionary. I did use setValuesForKeysWithDictionary but this only works for keys not keyPaths. My extension does the same thing, except allows the PLIST to contain key paths as well as keys. For example, detailTextLabel.text @"detailed text" as the key value pair.

This works well, except it is possible to crash the app because of a typo in the PLIST. For instance, it will crash if the property name exists but is a different type that expected (a number instead of a string for instance). What is the best way to make this more robust and code defensively to avoid these types of errors?

I am already using - (void) setValue:(id)value forUndefinedKey:(NSString *)key {} in my objects to trap items in the PLIST that don't correspond to actual keys.

Thanks in advance, Dave.

0 投票する
3 に答える
162 参照

c# - サイトに 100 万回繰り返し投稿するとどうなりますか?

ローカルホスト経由でウェブサイトに何かを投稿してデータを取得しようとしていたところ、突然、このアイデアが頭に浮かびました。特定の URL に 100 万回リクエストを送信しますか? 危害を避けたくなかっただけですが、不思議です。また、これが害を及ぼす可能性がある場合、どうすればそのような攻撃を回避できますか?

0 投票する
4 に答える
55688 参照

java - JavaString.splitがnullのString[]を返す可能性はありますか?

splitnullを返すことは可能String[]ですか?不必要なチェックをせずに、コード内で可能な限り防御的になりたいので、興味があります。コードは次のとおりです。

partsポストスプリットを使用する前にヌルチェックを実行する必要がありますか?

0 投票する
5 に答える
828 参照

c# - 非自動プロパティを持つ C# 匿名バッキング フィールド

私は、それを所有するクラスに対してもプライベートであり、ゲッターとセッターのみがアクセスできるプライベートメンバー変数を作成したいと考えています。次のような自動プロパティでこれを行うことができることを私は知っています

しかし、ゲッターとセッターを変更できるようにしたいので、(たとえば) フィールドが何回設定されたかをログに記録できます (所有するクラスによっても)。このようなもの

ここで、「hiddenValue」は、ゲッターとセッターでのみアクセスできるメンバーです。なんで?私は偏執的な防衛プログラマーなので、自分自身を信頼していません:p。

これはC#で可能ですか? もしそうなら、構文は何ですか?

ありがとう。

0 投票する
3 に答える
860 参照

c++ - C++ 防御的プログラミング: 型安全性を備えたバッファーからの読み取り

私が所有していないクラスがあるとしましょう: DataBuffer. さまざまな get メンバー関数を提供します。

このバッファーに含まれる構造体から読み取る場合、フィールドの順序とサイズがわかっているので、将来のコード変更でエラーが発生する可能性を減らしたいと考えています。

次に、誰かが変更をチェックインして、ヘッダーを書き込む前に何かを行います。

以下は、変更に対してコードを強化するための受け入れ可能な方法ですか? 関数名を getByte や getUShort などに変更することはできません。DataBuffer から継承することもできますが、それはやり過ぎのように思えます。

目に安全ではないレガシーコードの例で更新されました: