我有一个带有文本内容的网页(在。net平台上,使用c#),我想阻止用户复制文本或打印文档。
如果用户很难获得页面的副本,我知道他可以。但我想让它越难越好。
我在上面找到了几点。
- 使用Java Script阻止用户复制文本。缺点是用户可以很容易地从源代码复制文本。
- 不要把文字做成一张大图,因为用户可以一次打印出来。
- 使用插件在定义的视口大小中显示可滚动的文本,而不能复制文本。然后,用户不得不痛苦地打印出他可以在窗口视窗中容纳的每一个比特,这对我来说是很好的。在这种情况下使用Flash。
- 我看过ionCube的(php)解决方案,你不能复制或查看源文本,但缺点是它可以很容易地打印。我希望看到一个asp的编码解决方案在这里以及阻止用户打印页面的能力:)
- Scribd不是一个解决方案,因为如果你选择阻止用户从Scribd文档中复制文本,它会将文本转换为难以阅读的图像。
可能还有更多我不知道的解决方案。
你能告诉我这种情况下最好的解决方案吗?
没有解决办法。任何网页都必须在内存中表示为DOM,并且不缺乏工具来让人们操纵它并从中提取文本。
DRM在最好的情况下是无效的,当涉及HTML时,"最佳"是很长很长的路要走。
你可以使用最初的解决方案,并使用CSS规则将所有内容隐藏在打印版本中:
<style type="text/css" media="print">* { display: none;}</style>
当然,正如Quentin所说,没有确定的方法可以做到这一点,但是阻止选择,使用javascript在页面中写入的文本的编码版本,并使用这个CSS片段,您可以获得大约80%的用户。
document.getElementById('elementId').innerHTML = unescape(escapedTextGoesHere);