我一直在尝试使用Canvas Fingerprinting为我的数据库提供另一层用户识别......这是一个我知道有经验的黑客可以解决的层,因为指纹是在客户端创建的,但是,嘿,安全层越多越好, 对?
不幸的是,我测试Google Chrome指纹的每台Windows 7计算机都会产生相同的指纹.例如,转到这个jsfiddle:http://jsfiddle.net/af1pL6fb/5/我使用的所有Win7/Chrome机器都产生了503251348的散列.如果这么多不同的用户得到相同的散列,指纹没用.
我试图在画布上绘制各种随机的东西,让每台计算机产生一个稍微不同的结果 - 就像理论一样 - 但是我尝试的每一个Chrome浏览器都会给出相同的结果.
任何人都知道为什么当其他计算机的其他相同浏览器给我不同的结果时(正如预期的那样)Chrome的行为是这样的?
或者任何人都知道我可以在画布中包含哪些东西以鼓励不同的结果?
或者任何人都知道我可以使用不同的指标来区分计算机?例如,我正在将navigator.mimeType数组视为为特定浏览器提供半唯一指示符的潜在方法.
这是我的指纹功能:
function fingerprint() {
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var txt = 'i9asdm..$#po((^@KbXrww!~cz';
ctx.textBaseline = "top";
ctx.font = "16px 'Arial'";
ctx.textBaseline = "alphabetic";
ctx.rotate(.05);
ctx.fillStyle = "#f60";
ctx.fillRect(125,1,62,20);
ctx.fillStyle = "#069";
ctx.fillText(txt, 2, 15);
ctx.fillStyle = "rgba(102, 200, 0, 0.7)";
ctx.fillText(txt, 4, 17);
ctx.shadowBlur=10;
ctx.shadowColor="blue";
ctx.fillRect(-20,10,234,5);
var strng=canvas.toDataURL();
var hash=0;
if (strng.length==0) return;
for (i = 0; …Run Code Online (Sandbox Code Playgroud) 我在Regex上的表现越来越好,但我想出的东西超出了我目前的能力范围.
我想构建一个函数来测试(返回true或false)以测试是否在字符串中找到一个单词.但如果在另一个单词中找到这个单词,我不希望得到一个肯定的匹配.我还想建立检查复数的可能性.
以下是我希望获得的结果的一些示例:
要找的词: "酒吧"
"字符串搜索"//它应该返回什么
"foo bar"//是的
"foo bar." //真正
"foo bar!" // true(对于'bar'之前或之后的任何其他标点符号也是如此)
"foo酒吧." //真正
"foo bares." // true(即使bares有不同的含义然后吧,我会好的,因为我需要检查用"es"复数的单词,因为我需要检查单词以确定哪些单词用"s"复数,用"es"复数
"我的名字是巴特辛普森"//假(酒吧实际上是"巴特"的一部分)
"巴特辛普森去了酒吧." //真正
我将使用javascript/jquery来检查匹配
非常感谢你的帮助!
我div有一个图像,其中覆盖了许多其他divs。像这样的东西:
<div style='width:100%;height:100%'><img src='someImage.png'></div>
<div id='covered'>I'm covered by the div above me, but still visible</div>
Run Code Online (Sandbox Code Playgroud)
我想像这样定义一个 jQuery 事件处理程序:
$('#covered').live('mouseover',function(){ do stuff });
Run Code Online (Sandbox Code Playgroud)
但是该mouseover事件不起作用,因为div它覆盖了它。有什么办法可以让它发挥作用吗?
(注意...div覆盖它确实具有更高的 z-index,因为它需要始终在顶部分层。我使用“live”是因为#covered它是动态生成的。)
我正在构建一个简单的文件上传/文件下载功能到我的数据库中.唯一复杂的部分是所有文件都需要使用我的花式shmancy加密方法加密.
所以我做的是创建一个SQL条目,存储如下内容:id_file,filename,extension,size,dateadded等
然后,一旦我获得了id_file,我获取文件内容,加密它们,然后将内容作为[id_file] .txt保存到我的服务器.
然后这是再次下载文件的代码:
header("Pragma: public");
header('Content-Disposition: attachment;filename="'.$file['name'].'.'.$file['extension'].'"');
header('Cache-Control: max-age=0');
echo someFunctionIMadeForGettingAndDecryptingFileContents($_GET['id_file']);
exit;
Run Code Online (Sandbox Code Playgroud)
非常简单的东西,适用于所有文件类型EXCEPT .docx和.xlsx.下载.docx或.xlsx文件时,Office给出了一个错误,说"Word在"NAME OF FILE"中找到了不可读的内容..你想恢复这个文件的内容吗?如果你信任源... bla bla"我那么单击"是".它思考了一下,文件打开就好了.但显然我不能让我的客户使用它,如果他们每次都会得到那个错误.
我编写的代码适用于所有其他文件类型.即使.doc,.xls和.zip文件也能正常工作.
我的第一个想法是看看标题.我尝试过各种各样的解决方案,例如这里列出的解决方案:
为什么我下载的文件被损坏或损坏了? PHP下载excel文件变得腐败
那些没用.
我知道一个问题可能是文件中添加了额外的填充或空白区域.但是,如果我上传.txt文件然后再次下载...我可以看到没有任何额外的添加.
如果我MD5原始文件(good.docx)和原始文件的下载版本(bad.docx),则哈希值不同.
如果我将good.docx更改为good.zip并解压缩存档.然后为bad.docx做同样的事情.然后MD5两个目录,哈希是相同的.我在good.zip和bad.zip中散列了每个文件,每个文件哈希都是一样的.
还要注意,在我的服务器上的其他地方,我使用PHPWord和PHPExcel动态生成Office文件,这些文件都下载得很好.我用于PHPExcel的头文件/代码是:
header("Pragma: public");
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
Run Code Online (Sandbox Code Playgroud)
(是的,我尝试在上面的其他代码中使用"Content-Type"标题,但这没有帮助.)
我也尝试将文件保存在我的服务器上,下载并打开它.在完成该过程时,我得到了同样的错误.这是我以前用来做的代码:
$f=fopen("/myPath/temp.docx","w");
fwrite($f,someFunctionIMadeForGettingAndDecryptingFileContents($_GET['id_file']));
fclose($f);
exit;
Run Code Online (Sandbox Code Playgroud)
我试过创建一个名为"blank.docx"的空Word文件.然后这样做而不是保存新文件的函数....它用解密的文件内容替换blank.docx的内容.但是当在该过程之后下载blank.docx时,我得到了所有相同的...一个错误,但它最终会打开.最初在blank.docx上的文件属性(如Template:Normal.dotm)都不在服务修改的blank.docx上.
我正在使用Office 2007
UPDATE
这是一个下载文件的好(原始)版本的链接:http://empowerdb.org/good.docx
这里有一个下载该文件的错误(已处理)版本的链接:http: //empowerdb.org/bad.docx
解
正如Llama先生在下面指出的那样,我的加密函数正在减少一些额外的空字节.但事实证明,罪魁祸首并不像你想象的那么明显.这是我的加密:
trim(base64_encode(IV.mcrypt_encrypt(MCRYPT_RIJNDAEL_128,ENCKEY,$contents,MCRYPT_MODE_CBC,IV)))
Run Code Online (Sandbox Code Playgroud)
问题不在于trim()或base64_encode().它是使用mcrypt函数.我解决这个问题的方法是在传递我的文件内容以进行加密之前我做了另一个base64_encode().所以这样......
$file_contents_encrypted=base64_encode(myEncryptionFunction($file_contents));
Run Code Online (Sandbox Code Playgroud)
当然,解密时也是如此.
base64_encode在技术上是运行两次.但我可以看到在这种情况下需要如何在mcrypt之前运行,因为.docx和.xlsx的独特zip格式
我正在开发一个项目(希望)涉及利用已经内置到Facebook中的一些javascript.但是我马上遇到了障碍,我无法弄清楚是什么__d.
如果你看一下源javascript文件,几乎每个命令都以 __d
例如:
__d("legacy:live-timer",["LiveTimer"],function(a,b,c,d){a.LiveTimer=b('LiveTimer');},3);
Run Code Online (Sandbox Code Playgroud)
但我找不到任何javascript文件中的任何__d实际操作.是不是必须在某处定义所有这些其他功能才能利用它?
更新:
所以,假设有一个像这样的javascript的网站......
function alertSomething(var) {
if (var) alert("Here it is: "+var);
}
if (some condition) alertSomething("something");
Run Code Online (Sandbox Code Playgroud)
现在让我们说我有一个Chrome扩展程序,我可以将自己的Javascript注入页面.无法\我的Chrome扩展程序Javascript有这样的东西......
if (some other condition) alertSomething("something else");
Run Code Online (Sandbox Code Playgroud)
因此,我将利用页面上已存在的JavaScript中的一些代码?
我在我的服务上设置了点对点 WebRTC 连接。这是梦幻般的。
我现在希望继续进行群聊,肯定会涉及六个以上的人。我知道这需要媒体服务器。
但是媒体服务器是否保留与对等连接相同的端到端加密?如果数据只是通过服务器传递并分发给多个人,我可以想象它可能仍然是加密的。但是我看到的所有媒体服务器都做其他花哨的事情,比如录制流。我无法想象这是如何以端到端加密方式完成的(媒体服务器实际上无法查看通过它传递的数据)。
那么,是否可以像使用简单的对等连接那样使用媒体服务器进行端到端加密?