問題タブ [information-hiding]

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 投票する
4 に答える
666 参照

unit-testing - 依存性注入、単体テスト、および情報隠蔽

タイプBarのプライベートメンバーを持つクラスFooがあるとします。Fooの実装にBarが含まれていることをユーザーに知られたくないし、ユーザーが独自のBarを作成して、Fooのコンストラクター、その他のメソッド、または構成ファイルに渡すことができないようにする必要があります。

編集:バーは、特別なデータベース、ネットワーク接続、または別のプロセスなど、テスト環境の制御外のリソースにアクセスするという点でも問題があります。

Fooの単体テストもできるようにしたい場合はどうしますか?依存性注入はまだ可能ですか?これは、BarとFooが緊密に結合されていることを意味し(依存関係が一方向である場合でも)、この状況が受け入れられる状況になることは決してありませんか?

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

c++ - クラス/情報隠蔽のための内部および外部インターフェースの作成

静的 C++ ライブラリの一部のクラスでは、ライブラリのユーザーとライブラリ自体に異なるインターフェイスを提供したいと考えています。

例:

私の最初の試みは、外部インターフェイスを ABC として作成することでした。

長所:

  • アルゴリズムのユーザーは内部インターフェースを見ることができません

短所:

  • ユーザーはファクトリ メソッドを使用してインスタンスを作成する必要があります
  • ライブラリ内からシークレット パラメーターにアクセスする場合は、Algorithm を AlgorithmPrivate にダウンキャストする必要があります。

私が達成しようとしていることを理解していただければ幸いです。何か提案があればお待ちしております。

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

asp.net - aspxページの情報を暗号化する方法は?

ばかげた質問だとは思いますが、

私のクライアントは、ユーザーが個人情報を盗むのを防ぐために、支払いシステムからいくつかの情報を暗号化するように求めました。システムはWebベースであり、ASP.NETによって記述されています

JavaScript no right-clickやcss-no-printなどの厄介な解決策を試しましたが、どうやら私のクライアントはそれを気に入らなかったようです。

では、aspxで生成されたhtmlページの情報を暗号化するための商用ソリューションはありますか?

または、誰かが私のクライアントを追跡して、Webベースシステムでこれらの「盗むのを防ぐ」アイデアを阻止する方法を教えてもらえますか?

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

encryption - ワンタイム パッドでエンコードされた情報は、ランダム ノイズと区別できますか?

適切に使用されたワンタイム パッド暗号の暗号文は、暗号化されたメッセージに関するデータをまったく明らかにしないことを理解しています。

これは、ワンタイムパッドで暗号化されたメッセージと完全にランダムなノイズを区別する方法がないということですか? それとも、メッセージについて何も学べなくても、メッセージがあると判断する理論的な方法はありますか?

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

c++ - 情報隠蔽に違反せずにストリーム挿入をオーバーロードしますか?

プロジェクトにyaml-cppを使用しています。<<一部のクラスのand演算子をオーバーロードしたいの>>ですが、これを「適切に」行う方法に取り組んでいます。Noteたとえば、クラスを取ります。それはかなり退屈です:

<<オペレーターは簡単なソースです。で.h

そしてで.cpp

汗かいていない。次に、>>演算子を宣言します。で.h

しかし、.cpp私は得る:

もし私がそのようなことを書いたらnode[0] >> v._number;、CV 修飾子を変更してすべてのNoteフィールドを作成する必要がありますpublic(これは、データの隠蔽について (教授、本、および経験によって) 教えられたすべてのものを打ち負かします)。

node[0] >> temp0; v.number( temp0 );いたるところで行うのは、退屈で、エラーが発生しやすく、見苦しいだけでなく、無駄が多いように感じます (余分なコピーの場合)。

それから私は賢明になりました: 私はこれらの 2 つの演算子をNoteクラス自体に移動し、それらを s として宣言しようとしましfriendたが、コンパイラ (GCC 4.4) はそれを好きではありませんでした:

src/note.h:44: エラー: 'YAML::Emitter& Note::operator<<(YAML::Emitter&, const Note&)' は 1 つの引数を取る必要があります
src/note.h:45: エラー: 'void 注: :operator>>(const YAML::Node&, Note&)' は引数を 1 つだけ取る必要があります

質問:>>クラスの演算子を「適切に」オーバーロードするにはどうすればよいですか

  1. 情報隠蔽の原則に違反することなく?
  2. 過度のコピーなしで?
0 投票する
1 に答える
609 参照

c++ - クラス名前空間内のテンプレートの特殊化

クラスの本体の外部名前空間で定義されたテンプレートを特殊化するにはどうすればよいですか?

コンパイルされないBGLを使用した具体的な例:

container_genの特殊化をクラスAから移動すると、すべてがうまく機能します。特定の問題は、クラスAから「ブースト」名前空間を参照する方法がわからないことです。

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

html - Firebugを使用してフォーム入力フィールドにアクセスできないようにする最良の方法は?

外部APIに投稿されるフォームがあります。入力フィールドとして渡されるcustomer_tokenというパラメーターがあります。APIによる認証に使用され、すべての顧客に1つのトークンが割り当てられます。入力フィールドはFirefoxのFirebugに表示されます(非表示のフィールドですが)。

どうすれば非表示にできますか?

私が最初に思ったようにjavascriptを使用するオプション

フォームを送信する前に実行時にjavascriptを使用してその入力フィールドを作成し、すぐにフィールドを削除しても機能すると思いますが、それでもフィールドは一時的に表示されます。そのため、人が手動で取得できない場合でも、クローラーまたはスパイダー(正確な用語はわかりませんが、自動化されたスクリプト)がカスタマートークンを取得する可能性があります。これに対するより良い解決策はありますか?フォームの送信後、同じフォームが表示されたままになります。

Ikkeによって提案されたワンタイムトークンの概念を使用する

それがどのように機能するかわかりませんか?APIは、リクエストを処理するために正しいカスタマートークン値を必要とします。したがって、ワンタイムトークンを生成して返す場合でも、顧客トークンを含むリクエストを送信する必要があります。このようにして、誰でも私の顧客トークンの値を見ることができ、ワンタイムトークンを取得してそれを使用するためのリクエストを送信することもできます。では、どのように問題を解決するのでしょうか?

解決済み チェックフォームを直接投稿するのではなく、サーバーに投稿してからAPIに投稿する方法(セキュリティ上の理由から)? ありがとう、Sandeepan

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

html - 2つの異なるページ(/ imagesへのパスが異なる)からコード内の画像を参照する必要があります

だから、私は関数を持っています:

ここで、2つの異なるページからgenSomeHtml()を呼び出したいのですが、/imagesへのパスが異なります。そのため、「../../ images / foobar.gif」を正確に使用することはできず、どこを見ればよいかを示すパラメータを渡したくありません。結局のところ、呼び出し元のページはhtmlがどのようにレンダリングされるかを気にする必要はなく、機能する必要があります。

何か案は?

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

c++ - それで、構造体は仮想関数を持ち、継承をサポートできるようになりましたか?では、クラスとの違いは何ですか?情報隠蔽の真の目的とは?

重複の可能性:
C++ の構造体とクラスの違いは何ですか?

http://www.cplusplus.com/reference/std/typeinfo/type_info/

私の「先生」は、C++ の構造体とクラスの違いについてあまり教えてくれなかったと思います。

継承に関して、構造体はデフォルトでパブリックであるという他の質問を読みました...また、構造体にはコンストラクター/デストラクタがないと思います...

他の違いは何ですか?彼らはそんなに重要ですか?

そして、プライベート/保護された属性/メソッドについて話すとき、コンパイラがコンパイル時にそう言ってエラーを報告するという理由だけで、それらは実行時にアクセスできませんよね? 次に、これらの機能をクラスと比較すると、「情報隠蔽」は実際にプログラマーに何をもたらすのでしょうか? 誰かがクラスを再利用するときに、プライベート/保護されたものがコンパイラによって報告されるため、この人がクラスを悪用しないようにするためですか?

私はまだ情報隠蔽の本当の目的に苦労しています.プログラムのセキュリティを強化し、セキュリティ違反を減らすように頭の中で鳴らしたいのですが、言語でのそのような設計の目標について本当に混乱しています... (そして、私は決して C++ に反対するつもりはありません。どのような場合にこの機能が興味深いかどうかを理解したいだけです。そうでない場合、それは問題ではありませんが、知りたいだけです...)。

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

php - ドキュメントから連絡先情報を自動的に削除する

ドキュメントから電話番号、電子メールアドレス、さらには連絡先アドレスなどの連絡先情報を効果的に削除する、php から使用できる優れたソリューションを知っている人はいますか?

アップデート

やあみんな、これが私がこれまでに思いついたものです。かなりうまくいきます。

誰かがアドレスについて何か考えを持っていますか?私はおそらく、都市、州の郵便番号を検出し、その前に x 文字を取り除く方法を考え出すと考えています. 誤って一部のデータを破壊する可能性がありますが、開示するよりはましかもしれません。他の誰かがこれに遭遇したかどうか、私は本当に興味があります.