问题标签 [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.

0 投票
2 回答
358 浏览

.net - 保护 .net 代码(知识产权)是不可能的吗?

我以前经常使用 JavaScript 工作,而真正困扰我的雇主的一件事是源代码太容易被窃取。即使进行了混淆,也没有什么真正的帮助,因为我们都知道任何有能力的开发人员都可以根据需要阅读该代码。

JS 脚本是一回事,但是那些在 IP(知识产权)上投资了数百万的 SOA 项目呢?我喜欢 .net,尤其是 C#,但最近我又不得不回答这个问题“如果我们把这个编译好的程序交给我们的客户,他们的开发人员可以对它进行逆向工程吗?” 我已经竭尽全力混淆代码,但我知道另一个坚定的 C# 开发人员不会花太多时间来获取代码。

所以我认真地提出一个问题,是否不可能保护 .net 代码?

我的考虑如下:

  1. 即使是常规的本机可执行文件也可以反转,但并不是每个开发人员都有能力做到这一点。与.net 程序集相比,反汇编本机可执行文件要困难得多。
  2. 混淆只会让你到目前为止,但它确实有一点帮助。
  3. 为什么我从未见过 Microsoft 公开承认任何用 .net 编写的东西都容易被盗 IP?为什么我从未在任何 Microsoft 网站上看到过任何反措施培训?为什么 VS 带有社区混淆器作为可选组件?好吧,也许我只是在这里陷入困境,但它在大多数开发人员的优先级列表中并不高。
  4. 是否有计划在任何未来版本的 .net 中解决我的担忧?

我不是在敲.net,但我想要一些现实的答案,谢谢,标记为主观和社区的问题!

0 投票
2 回答
2048 浏览

.net - 创建自定义 CodeAccessSecurityAttribute 导致编译异常

我正在构建一个自定义 CodeAccessSecurityAttribute 来处理我的 WCF 服务的授权。我这样构建了A类:

在编译时它会产生这个错误。

在玩了一点之后,我想出了下一个编译没有错误的示例:

我知道这是因为 SecurityAction 枚举没有直接引用到 A 类的公共方面,但我不知道如何制作它,以便我可以使用 A 类方法而不是 B 类方法。

0 投票
2 回答
14688 浏览

dll - c# dll加密

我需要加密 ASP.NET 页面使用的 C# 代码。所以,当我编译创建一个 DLL 文件时,我确实需要加密我的 DLL 文件。请帮我如何加密DLL文件...

0 投票
1 回答
7955 浏览

.net - 方法访问异常

我有一个非托管组件(加密功能),VB.NET(2.0)安装程序类在应用程序安装期间用于应用程序服务器上的某些安装诊断。问题是每当调用方法时都会引发 MethodAccessException 异常。当我在应用程序本身(Windows 2.0)中调用该方法时,比如说任何其他应用程序程序集的形式,都接受完全信任的调用。但是,当安装程序类(自定义操作)进行调用时,非托管程序集不允许它并引发异常。我对 caspol 工具进行了一些研究,但仍然无法掌握足够的代码安全性来解决问题 谢谢。

0 投票
1 回答
307 浏览

php - 保护 PHP 代码。需要一些提示

我想用 ionCube 对我的代码进行编码。但我不知道如何防止用户在没有编码的情况下破解它。

所以我需要一些提示。

我的项目是一个 MVC。

一切都从 index.php 开始,它调用 core.php 并运行。

我应该如何包含文件。如何确保调用文件时它是原始文件?

我知道有一些 PHP 函数会打印出函数名称等。我需要防止这种情况发生。

用户从另一个文件中包含 index.php 文件并尝试获取变量,例如使用var_dump($_GLOBALS);

0 投票
1 回答
322 浏览

.net - 执行 .NET “安全检查”会导致安全错误吗?

我有一段代码:

FxCop窒息:

CA2122:不要间接暴露具有链接需求的方法

解决方法:MyMethod()调用DirectoryEntry.AuthenticationType.set(AuthenticationTypes)其中有一个 LinkDemand。
通过进行此调用,DirectoryEntry.AuthenticationType.set(AuthenticationTypes)间接暴露给用户代码。

Info:不要用不执行安全检查的方法包装受 LinkDemand 保护的方法。LinkDemand 检查直接调用者的权限,而不是检查调用堆栈中所有调用者的权限。在这种情况下,将检查包装方法的权限。如果包装方法本身不检查调用堆栈中更高调用者的权限,恶意代码可能能够执行被包装的函数,即使它没有这样做的权限。”

我完全赞成在某个地方添加一些东西来“解决”这个问题。但是如果它会导致当前为客户工作的代码自发地不为客户工作,它就不能添加它。

注意:我不知道要添加什么,或者在哪里添加(FxCop 不包含该信息),如果它是死胡同,我不想深入研究代码安全的秘密世界。

如果我向 中添加“安全检查*” MyMethod,当前有效的代码是否有可能停止工作?


假设如果有人没有许可,现在编写的代码将无法工作。换句话说:

如果有人没有正确的“权限”,将会失败。在调用堆栈的更高位置添加“安全检查”不会改变这一事实 - 只会更快地触发失败。在这种情况下,添加安全检查是可以的。

另一方面,如果:

目前有效,但

开始失败,然后我无法真正添加它。

特别是在每个人都使用的库代码中。


我无法自己测试的原因是没有人知道如何复制出现问题的情况。

就像大多数人通过尝试使用用户名和密码连接到 AD 并读取属性来检查活动目录的凭据一样。即使用户名/密码正确,您也可能无法读取属性。我敢打赌,除了我自己之外,没有人知道配置 ActiveDirectory 来复制该故障案例。

就我而言,我认为没有人知道如何配置东西以使代码安全性失败。

0 投票
1 回答
1239 浏览

obfuscation - 混淆 WCF 代理类

如何使用 Dotfuscator 混淆 WCF 代理类?我已经从他们的网站下载了 Dotfuscator Pro Edition 试用版。我混淆了我的 app.exe 文件,一切都很好地混淆了,但 WCF 代理类没有。(我ILDASMed exe)。

WCF 代理类正在放弃我的应用程序的结构。Dotfuscator 应用程序中是否缺少任何设置?

有没有更好的方法来隐藏 WCF 服务代理类?

0 投票
3 回答
512 浏览

c# - 避免用户代码调用 C# 中的反射

我正在为我目前正在教授的课程实施一个自动“评估器”。总体思路是每个学生都提供一个实现了一些算法的 DLL。我的评估器使用反射加载所有这些 DLL,找到学生实现并在比赛中评估它们。所有这些算法都是黑盒优化器,它们实现了以下接口

Function(至少相关部分)的类定义是:

如您所见,我需要将一个Function实例传递给这些元启发式。这些功能都是我自己实现的。它们中的大多数在某种意义上是随机的,即我在函数构造函数中选择了一个随机的最佳点。这就是为什么你可以xopt在类中看到一个字段。问题是,我不希望我的学生能够通过反射或任何其他技术访问xoptorfopt字段,因为那将是作弊,或者至少,找出他们是否这样做,以便我可以相应地惩罚他们;) .

所以,一般的问题是:有没有办法在我动态加载的一段代码中禁止使用反射,或者在任何其他意义上禁止这段代码访问私有字段(作弊)。

提前致谢。

0 投票
1 回答
112 浏览

.net - System.Security.Permissions.DataProtectionPermissionAttribute 的使用

你曾经在现实世界的应用程序中使用过这个类吗?你能想象它有用的场景吗?我问是因为在 WCF 中有MessageBodyMemberAttribute控制数据完整性/加密并想知道它们是否以某种方式相关。

0 投票
2 回答
1124 浏览

asp.net-mvc - 在 FastCGI、ASP.NET MVC 和服务器应用程序的 Web 表单中,哪一个是最快和最安全的

我必须构建一个自动聊天应用程序,它将前端作为网站上的小部件和服务器上的后端逻辑。其主要目的是为客户提供一个界面,以便与坐在以服务器为通信点的位置的聊天人员解决他们的查询。如果没有可用的人,则应用程序将解析字符串并尝试通过检查数据库来给出一些答案。

我在 C++ 方面有很好的经验,在 Java 方面有一点经验。该应用程序的主要关注点是源代码安全性和最高效率。

我从服务器端面临的限制是我必须在 IIS 上运行它,并且唯一支持的脚本语言是 PHPv5、ASP、ASP.NET 和 FastCGI。

我不打算使用 PHP,因为我从谷歌搜索中发现可以对它进行逆向工程,而且我需要很多时间来学习一门新语言,所以严格来说不。

我更喜欢使用 FastCGI,因为它可以完全满足我的要求,但我无法找到在 Windows 上使用 C++ 或任何好的教程进行编译的方法。我在 google 上找到的大多数与 FastCGI 开发相关的结果都是关于 Linux 或 Perl for windows。我也无法找到如何在 Windows 平台上编译它的方法。

我现在被迫选择 ASP.NET,这将是我最后的选择,因为它是一种解释性语言,而解释性语言往往不利于逆向工程。

所以任何人都可以建议我如何去做。如果 FastCGI 没有出路,那么在给定的情况下,建议我在 MVC 和 WebForms 中哪个更好。我对他们俩都是新手,我需要在两周内完成申请。