问题标签 [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 - 依赖注入、单元测试和信息隐藏

假设您有一个类 Foo,其私有成员类型为 Bar。您不希望用户知道 Foo 的实现包含一个 Bar,并且您不希望用户能够创建自己的 Bar 并通过 Foo 的构造函数、任何其他方法或配置文件传递它。

编辑: Bar 也存在问题,因为它访问测试环境无法控制的资源,例如特殊数据库、网络连接或其他进程。

当您还希望能够对 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 页面中的信息?

或者有人可以告诉我如何在基于网络的系统中追捕我的客户以阻止这些“防止盗窃”的想法?

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 );到处都做不仅乏味、容易出错和丑陋,而且相当浪费(额外的副本怎么办)。

然后我变得聪明了:我试图将这两个运算符移动到Note类本身中,并将它们声明为friends,但是编译器(GCC 4.4)不喜欢这样:

src/note.h:44: error: 'YAML::Emitter& Note::operator<<(YAML::Emitter&, const Note&)' 必须只取一个参数
src/note.h:45: error: 'void Note: :operator>>(const YAML::Node&, Note&)' 必须只有一个参数

问题:如何“正确”重载>>类的运算符

  1. 在不违反信息隐藏原则的情况下?
  2. 无需过度复制?
0 投票
1 回答
609 浏览

c++ - 类命名空间内的模板特化

如何专门化在我的类主体中的某个外部命名空间中定义的模板?

使用不编译的 BGL 的具体示例:

如果将 container_gen 的专业化移出 A 类,一切都会很好。具体问题是我不知道如何从 A 类引用“boost”命名空间。

0 投票
2 回答
2265 浏览

html - 隐藏表单输入字段以防止使用 firebug 访问的最佳方法?

我有一个发布到外部 API 的表单。有一个名为 customer_token 的参数作为输入字段传递。它用于 API 的身份验证,并为每个客户分配一个令牌。输入字段在 Firefox 的 Firebug 中是可见的(即使它是一个隐藏字段)。

我该如何隐藏它?

选项 使用我最初想的 javascript

我认为在提交表单之前使用 javascript 在运行时创建该输入字段并立即删除该字段将起作用,但该字段仍会暂时出现。因此,即使一个人无法手动获取它,恐怕爬虫或蜘蛛(我不知道确切的术语 - 但一些自动化脚本)可能会获取客户令牌。有没有更好的解决方案?表单提交后,仍然显示相同的表单。

使用 Ikke 建议的一次性令牌概念

我不确定它将如何工作?API 需要正确的客户令牌值来处理任何请求。因此,即使要生成一次性令牌并返回,也必须发送带有客户令牌的请求。这样,任何人都可以看到我的客户令牌值,他们还可以发送请求以获取一次性令牌并使用它。那么它是如何解决问题的呢?

已解决 检查如何将表单发布到我的服务器然后到 API,而不是直接发布(出于安全原因)? 谢谢, 桑迪潘

0 投票
1 回答
34 浏览

html - 我需要在我的代码中引用来自两个不同页面的图像(具有不同的 /images 路径)

所以,我有一个功能:

现在,我想从两个不同的页面调用 genSomeHtml(),但它们有不同的 /images 路径。所以,我不能完全使用“../../images/foobar.gif”,我宁愿不传递参数来告诉我在哪里看。毕竟,调用页面不应该关心 html 是如何呈现的,它只需要工作。

有任何想法吗?

0 投票
1 回答
18585 浏览

c++ - 那么现在 struct 可以具有虚函数并支持继承吗?那么与类有什么区别呢?信息隐藏的真正目的是什么?

可能重复:
C++中的struct和class有什么区别

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

我想我的“老师”并没有告诉我很多关于 C++ 中结构和类之间的区别。

我在其他一些关于继承的问题中读到,结构默认是公共的......我也猜结构没有构造函数/析构函数......

那么其他的区别是什么?他们有那么重要吗?

当谈到私有/受保护的属性/方法时,它们在运行时无法访问,只是因为编译器在编译时告诉它并报告错误,对吧?那么将这些特性与类进行比较,“信息隐藏”究竟给程序员带来了什么?是否在这里,当有人重用该类时,此人不会滥用该类,因为编译器会报告私有/受保护的东西?

我仍然在为信息隐藏的真正目的而奋斗,它仍然想在我的脑海中听起来像是它为程序带来了更多的安全性,这意味着更少的安全漏洞,但我真的对这种语言设计的目标感到困惑...... (而且我不打算以任何方式反对 C++,我只是想了解在什么情况下这个功能可能有趣或不有趣;如果没有,那不是问题,但我只是想知道......)。

0 投票
1 回答
102 浏览

php - 自动从文档中删除联系信息

有谁知道可以从 php 中使用的一个好的解决方案,它可以有效地从文档中删除联系信息,如电话号码、电子邮件地址,甚至可能是联系地址?

更新

嘿伙计们,这是我到目前为止想出的,效果很好。

有没有人对地址有任何想法,我想可能想出一种方法来检测城市,州邮编,然后在此之前删除 x 字符。它可能会意外破坏一些数据,但这可能比披露更好。我真的很想知道是否有其他人遇到过这个问题。