问题标签 [protection]
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.
encryption - 创建不可修改的文件
我希望能够创建一个文件,将其分发给最终用户,但阻止他们对文件进行修改。
现在,显然,我实际上无法阻止任何人修改文件 - 所以我的方法是检测并拒绝文件是否被修改。
我的意图是生成文件内容的加盐哈希并将其附加到文件中。读取时,在读取文件的其余部分之前验证哈希。这样做的缺点是我必须在读取文件的可执行文件中分发固定的“盐”。显然我可以在某种程度上混淆它,但这仍然感觉像是一个薄弱环节。
有没有更好的方法来解决这类问题?
email - 有哪些方法可以保护网站上的电子邮件免受垃圾邮件机器人的侵害?
我正在创建一个面向公共互联网的网站,其中包含他们销售人员的电子邮件地址。
我必须使用哪种编程选项来生成“mailto”并显示来自该地址的电子邮件,但限制垃圾邮件程序获取该地址?
protection - 订阅保护内容?
开发提供课程内容的订阅类型网站(如 Lynda.com)的最佳方法是什么?
您如何保护内容不被下载(音频和视频)?
处理密码的最佳方法是什么?用户是否可以拥有一个登录名和密码,然后还有一个额外的密码,该密码会定期更改并由网站分发,以减少人们使用其他人的密码?
您如何最大限度地减少人们与其他人共享密码的次数?
obfuscation - 小型供应商的软件保护
这是我们都必须在某个时候考虑的问题。
经过多年和许多方法之后,我倾向于总体上同意这样的说法:“对于任何数百人使用的受保护软件,您都可以找到破解版。到目前为止,每个保护方案都可以被篡改。” 您的雇主是否强制使用反盗版软件?
此外,每次我发布有关此主题的信息时,都会有人提醒我;“首先,无论你采用什么样的保护措施,一个真正敬业的饼干最终都会通过所有的保护屏障。” 对于单个开发人员来说,什么是最物有所值的 c# 代码保护
因此,尽管有这两个广泛正确的免责声明,让我们谈谈“保护”!
我仍然觉得对于不太可能吸引熟练破解者的时间和注意力的小型应用程序,保护是一项值得的练习。
很明显,无论您做什么,如果破解者可以通过修补应用程序来切换 IF 语句 (jmp) 的结果,那么世界上所有的密码和加密狗都无济于事。
所以我的方法是使用以下产品通过虚拟化混淆代码: http ://www.oreans.com/codevirtualizer.php 我对这个产品非常满意。据我所知,它从未被击败过。我什至可以用 PEcompact 压缩可执行文件还有其他人有这方面的经验吗?
除了 EXEcryptor 的问题之外什么都没有 http://www.strongbit.com/news.asp 即使该网站使用起来也很头疼。编译的应用程序在执行任何 WMI 调用时都会崩溃。
这种方法允许您使用混淆来包围较小的代码部分,从而保护安全检查等。
我使用在线授权方法,因为应用程序需要定期从服务器获取数据,因此用户长时间离线使用它是没有意义的。根据定义,该应用程序在这一点上毫无价值,即使它已被破解。
所以一个简单的加密握手就足够了。我只是偶尔在混淆保护中检查它。如果用户在另一台机器上安装应用程序,则在启动时会上传新 ID,服务器会禁用旧 ID 并返回新授权。
我还使用已编译应用程序的哈希值,并在启动时检查它是否有任何更改,然后从应用程序内将应用程序作为文件(带有读取锁)打开,以防止任何人在启动后更改它。
由于所有静态字符串在 .exe 文件中都清晰可见,因此我尝试使用通用的错误消息等。您不会在任何地方找到字符串“授权失败”。
为了防止内存转储,我使用了一种简单的文本混淆技术(例如 XOR 每个字符)这使得内存中的纯文本数据更难与变量等区分开来。
当然,对于任何真正敏感的数据都有 AES。我喜欢文本的计数器模式,因为这不会导致重复序列显示底层数据(如一系列空白)。
但是使用所有这些技术,如果可以从内存中转储密钥或初始化向量,或者绕过 IF 语句,那么一切都被浪费了。
我倾向于使用 switch 语句而不是条件语句。然后我创建了第二个函数,它基本上是一个死胡同,而不是实际执行所需任务的函数。
另一个想法是编写添加了变量的指针。变量是授权的结果(通常为零)。这将不可避免地在某个时候导致 GPF。我只在一些较低级别的授权失败后才将其用作最后的手段,否则真正的用户可能会遇到它。然后,您的软件的声誉就会降低。
你使用什么技术?
(这不是一个讨论实现某事的优点的线程。它是为那些决定做某事的人设计的)
image - 在 Web 应用程序中保护图像媒体
我们正在维护一个大型 Web 应用程序中的图像媒体数据库。高分辨率 jpg 文件很大(> 15MB),不得以任何方式下载。现在我们需要向客户端提供对图像细节(裁剪)的访问(如放大功能)。客户应该看到图像的缩小版本,并且能够选择要在全比例模式下查看的区域 (100%)。
如何以最高效的方式(流量和 CPU 方面)实现这一点?只要高分辨率图像文件仍然受到保护,我们愿意接受任何解决方案。该应用程序是在 c# 和 .net framework 3.5 中开发的。
有任何想法吗?提前致谢!
php - PHP 密码的安全哈希和盐
目前据说MD5部分不安全。考虑到这一点,我想知道使用哪种机制来保护密码。
这个问题,“双重哈希”密码是否比仅哈希一次更安全? 建议多次散列可能是一个好主意,而如何为单个文件实施密码保护?建议使用盐。
我正在使用 PHP。我想要一个安全快速的密码加密系统。将密码散列一百万次可能更安全,但也更慢。如何在速度和安全之间取得良好的平衡?另外,我希望结果具有恒定数量的字符。
- 散列机制必须在 PHP 中可用
- 它必须是安全的
- 它可以使用盐(在这种情况下,所有盐都一样好吗?有什么方法可以产生好的盐吗?)
另外,我是否应该在数据库中存储两个字段(例如,一个使用 MD5,另一个使用 SHA)?它会让它更安全还是更不安全?
如果我不够清楚,我想知道要使用哪个散列函数以及如何选择好的盐,以便拥有安全快速的密码保护机制。
不完全涵盖我的问题的相关问题:
PHP简单密码加密中SHA和MD5有什么区别
存储密钥的安全方法,asp.net的密码
如何在Tomcat 5.5中实现加盐密码
security - 数据库安全
如何保护 SQL Server 数据库不被他人查看?
.net - 混淆的效果如何?
另一个问题,即Best .NET obfuscation tools/strategy,询问混淆是否易于使用工具实现。
我的问题是,混淆有效吗?在回复这个答案的评论中,有人说“如果你担心源代码被盗......对于真正的破解者来说,混淆几乎是微不足道的”。
我查看了 Dotfuscator 社区版的输出:它看起来让我感到困惑!我不想保持这种状态!
我知道简单地“破解”混淆软件可能相对容易:因为您只需要找到软件中的任何位置实现您想要破解的任何内容(通常是许可证保护),然后添加一个跳转来跳过它。
如果担心不仅仅是最终用户或“盗版”破解:如果担心是“资源盗窃”,即如果您是软件供应商,而您担心的是另一个供应商(潜在的竞争对手)反向 -设计您的源代码,然后他们可以将其用于或添加到他们自己的产品中……在何种程度上简单的混淆是对这种风险的充分或不充分的保护?
第一次编辑:
有问题的代码大约是 20 KLOC,它在最终用户机器上运行(用户控件,而不是远程服务)。
如果混淆真的“对真正的破解者来说几乎是微不足道的”,我想了解它为什么无效(而不仅仅是“多少”它无效)。
第二次编辑:
我不担心有人反转算法:更担心他们将算法的实际实现(即源代码)重新用于他们自己的产品。
考虑到 20 KLOC 需要几个月的时间来开发,是否需要更多或更少的时间(几个月)才能对所有内容进行去混淆处理?
是否有必要对某些东西进行去混淆以“窃取”它:或者一个理智的竞争对手可能只是将它批发到他们的产品中,同时仍然被混淆,接受它是维护的噩梦,并希望它几乎不需要维护?如果这种情况是可能的,那么混淆的 .Net 代码是否比编译的机器代码更容易受到这种攻击?
大多数混淆的“军备竞赛”是否主要旨在防止人们甚至“破解”某些东西(例如查找和删除实现许可保护/执行的代码片段),而不是防止“来源盗窃”?
.net - net reactor 和 clickonce 部署
在构建我们的 VB.NET .exe 之后,然后使用第 3 方 .NET Reactor 实用程序对其进行混淆,然后将其输出包含在 VS2005 部署项目中。有没有办法在使用 click-once 发布之前将 .exe 替换为加扰版本?
有没有人设法通过单击一次来部署受网络反应堆保护的应用程序?