我使用两个PHP脚本移动大量数据:一个在客户端使用命令行PHP脚本,另一个在Apache后面.我将数据发布到服务器端并使用php://输入流将其保存在Web服务器端.为防止达到任何内存限制,每个POST请求的数据将分为500kB块.这一切都很好.
现在,为了节省带宽并加快速度,我希望在发送之前压缩数据,并在另一端接收时解压缩.我找到了3对可以完成这项工作的功能,但我无法决定使用哪一个:
你会推荐哪一对功能?为什么?
更新:我刚读过zlib FAQ:
gzip format(gzencode)旨在保留有关单个文件的目录信息,例如名称和上次修改日期.gzcompress另一方面,zlib格式()设计用于内存和通信通道应用程序,并且具有更紧凑的头部和尾部,并且使用比gzip更快的完整性检查.
我有一个HTML登录表单,其中包含以下元素(按此顺序):
input type=text (用户名输入)input type=password (密码)input type=submit (登录按钮)当焦点在text input?时,为什么Android浏览器在软键盘中显示"Go"按钮而不是"Next"按钮?这会导致用户因为输入用户名后,用户在键盘(通常是正确的动作)按下右下角按钮,表单将用空密码,这显然是行不通的提交失败很容易登录.[如果我的浏览器设置为记住密码并且密码管理器能够填写密码,则此行为将有意义.但是,这不是这种情况,因为您可以在下面测试自己.]
我想让输入类型文本具有"下一步"按钮和输入类型密码(提交前的最后一个输入)以具有"开始"按钮.
问题表单的一个示例位于https://peda.net/:login(此表单包含用于检测输入的"Enter"键的代码,并阻止提交表单,除非最后一个可见表单输入被聚焦).
你知道这个问题的真正解决方法吗?我知道如果我实现本机应用程序,我会使用android:imeOptions="actionNext"(请参阅如何将Android软键盘"Go"按钮更改为"Next").但是,在这种情况下,它是一个HTML表单和Android默认浏览器.
至少在以下配置中可以看到问题:
在PHP5中,是否保证为每个对象实例调用__destruct()方法?程序中的异常是否可以防止这种情况发生?
我正在使用git进行版本控制,但我目前缺少Eclipse Mylyn集成的好问题/错误/票证跟踪器.
我正在寻找的功能:
次要功能(会很好,但我可以没有):
你能提出什么建议吗?
更新:截至2012-09-13未找到合适的工具.迄今为止最佳匹配摘要:
我在使用以下Content-Security-Policy HTTP标头时尝试使用TinyMCE:
X-WebKit-CSP: default-src 'self'; script-src 'self' 'unsafe-eval'; img-src *; media-src *; frame-src *; font-src *; style-src 'self' 'unsafe-inline'; report-uri /:reportcspviolation
Run Code Online (Sandbox Code Playgroud)
我在工具 - JavaScript控制台中收到以下错误:
Refused to execute JavaScript URL because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval'".
about:blank:1
Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval'".
test.xhtml:1
Refused to execute JavaScript URL because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-eval'".
about:blank:1
Refused …Run Code Online (Sandbox Code Playgroud) javascript security google-chrome tinymce content-security-policy
我已经有了以下内容
[attr]POFILE merge=merge-po-files
locale/*.po POFILE
Run Code Online (Sandbox Code Playgroud)
在.gitattributes同一个本地化文件(例如locale/en.po)已经在并行分支中修改时,我希望合并分支以正常工作.我目前正在使用以下合并驱动程序:
#!/bin/bash
# git merge driver for .PO files (gettext localizations)
# Install:
# git config merge.merge-po-files.driver "./bin/merge-po-files %A %O %B"
LOCAL="${1}._LOCAL_"
BASE="${2}._BASE_"
REMOTE="${3}._REMOTE_"
# rename to bit more meaningful filenames to get better conflict results
cp "${1}" "$LOCAL"
cp "${2}" "$BASE"
cp "${3}" "$REMOTE"
# merge files and overwrite local file with the result
msgcat "$LOCAL" "$BASE" "$REMOTE" -o "${1}" || exit 1
# cleanup
rm -f "$LOCAL" "$BASE" "$REMOTE" …Run Code Online (Sandbox Code Playgroud) TL; DR:我有一个CMS系统,它使用文件内容的SHA-1作为文件名来存储附件(不透明文件).如果我已经知道SHA-1哈希匹配两个文件,如何验证上传文件是否真的与存储中的文件匹配?我想要有很高的表现.
长版:
当用户将新文件上传到系统时,我计算上传文件内容的SHA-1哈希,然后检查存储后端中是否已存在具有相同哈希的文件.PHP将上传的文件放入/tmp我的代码运行之前,然后sha1sum针对上传的文件运行以获取文件内容的SHA-1哈希值.然后,我从计算出的SHA-1哈希计算扇出,并确定NFS安装目录层次结构下的存储目录.(例如,如果文件内容的SHA-1哈希是37aefc1e145992f2cc16fabadcfe23eede5fb094永久文件名,则/nfs/data/files/37/ae/fc1e145992f2cc16fabadcfe23eede5fb094.)除了保存实际文件内容外,我还在INSERTSQL数据库中为用户提交的元数据添加了新行(例如Content-Type,原始文件名) ,datestamp等).
我目前正在弄清楚的一个案例是新上传的文件具有与存储后端中的现有哈希匹配的SHA-1哈希.我知道事故发生的变化是天文数字低,但我想确定.(有关用例,请参阅https://shattered.io/)
由于两个文件名$file_a以及$file_b,如何快速检查,如果这两个文件具有相同的内容是什么?假设文件太大而无法加载到内存中.使用Python,我会使用,filecmp.cmp()但PHP似乎没有任何类似的东西.我知道fread()如果找到一个不匹配的字节就可以完成和中止,但我宁愿不写那个代码.
我正在尝试使用MathJax作为我们的Web应用程序的一部分,该应用程序使用非常严格的内容安全策略(CSP).问题是MathJax被编码为使用eval()[确切地说,形式Function()],CSP默认不认为是安全的.
我目前正在使用以下CSP标头:
X-Content-Security-Policy: allow 'self'; img-src *; media-src *; frame-src *; font-src *; frame-ancestors 'none'; style-src *; report-uri '/:save-csp-violation';
Run Code Online (Sandbox Code Playgroud)
这导致MathJax 2.0代码失败,因为它使用Function().我试图Function()仅允许位于路径下相同原点的MathJax的unsafe-eval(ie )/:static/math/.为此,我尝试添加
unsafe-eval '/:static/math/*'
Run Code Online (Sandbox Code Playgroud)
使完整的标题看起来像
X-Content-Security-Policy: allow 'self'; img-src *; media-src *; frame-src *; font-src *; frame-ancestors 'none'; style-src *; report-uri '/:save-csp-violation'; unsafe-eval '/:static/math/*'
Run Code Online (Sandbox Code Playgroud)
但我仍然无法使用Firefox 13.0来运行代码.我收到Firefox Web Console(位于Tools - Web Developer)的错误消息:
[10:09:59.072] call to Function() blocked by CSP @ http://localhost:8080/:static/math/2.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML:29
Run Code Online (Sandbox Code Playgroud)
但是,我没有收到"报告 - uri"的CSP报告.(如你所见,我目前正在通过自定义localhost端口运行测试而不使用SSL,以防有所不同.之前的冒号static不是拼写错误,我保留所有以冒号开头的路径部分供内部使用应用程序,所有用户内容可以自由定义其他URL.)
我对 …
我正在尝试找出最好的HTTP标头,以便为四个用例发送.我希望得到不依赖于用户代理/协议版本嗅探的标题,但我会接受,如果没有别的东西适合.所有URL都是通过完全自定义处理程序获取的,因此我可以根据需要选择所有标头,这完全是关于中间代理和用户代理.如果可能,这应该与HTTP/1.0和HTTP/1.1客户端兼容.如果存在多个解决方案,则最好的解决方案将是通过线路发送的最短解决方案.
静态公共内容
所有"静态公共内容"都是HTTP真正关注的东西:如果URL相同,则内容是相同的.我可以轻松地做到这一点:例如,我将用户个人资料图标放入http://domain.com/profiles/xyz/icon/1234abcd,其中"1234abcd"是图标文件内容的SHA-1.如果我将来更改为图标,我将创建一个新URL并修改应使用新图标的所有现有引用.什么是最好的标头声明这可以永久缓存并可以共享?我正在考虑一些事情:
Date: <current time>
Expires: <current time + one year>
Run Code Online (Sandbox Code Playgroud)
这是否足以允许用户代理和代理进行缓存?我需要Last-Modified还是Pragma?
静态非公开内容
所有"静态非公开内容"都是静态的,但并非每个人都可以使用.实际上,此内容仅对选定的登录用户可用(会话保持会话cookie保持会话UUID).如果URL相同,则内容相同.但是,回应不公开.用例可以是在社交网络服务中与所选朋友共享的图像.我正在考虑一些事情:
Date: <current time>
Expires: <current time>
Cache-Control: private, max-age=<huge number>, s-maxage=0
Run Code Online (Sandbox Code Playgroud)
这是否足以允许用户代理缓存并禁用代理?我需要Pragma吗?
不稳定的公共内容
所有"易变的公共内容"都是易变的东西,可供所有人使用.当没有登录时,有点像http://slashdot.org/的首页.目的是允许在不变的URL中快速更新内容.请注意,我不想破坏用户代理历史记录机制(即,从易失性页面单击某些内容然后点击后退按钮不应导致从服务器获取易失性页面 - 但是,单击指向该服务器的链接首页应该从服务器获取资源).我正在考虑一些事情:
Date: <current time>
Expires: <current time>
Cache-Control: public, max-age=0, s-maxage=0
Run Code Online (Sandbox Code Playgroud)
这是否足以阻止缓存但允许历史记录机制(后退按钮)?我知道,如果我发送,Cache-Control: no-store, must-revalidate我可以强制重装,但这不是我想要的,因为这也会打破后退按钮.我需要Last-Modified还是Pragma?
尽管这是公开的,但允许中间代理缓存它可能没有意义,因为它是不稳定的.
不稳定的非公开内容
所有"易变的非公开内容"都是易变的东西,并不是每个人(私人)都可以使用.当你登录时,有点像http://slashdot.org/的首页.目的是允许在不变的URL中快速更新内容.请注意,我不想破坏用户代理历史记录机制(即,从易失性页面单击某些内容然后点击后退按钮不应导致从服务器获取易失性页面 - 但是,单击指向该服务器的链接首页应该从服务器获取资源).我正在考虑一些事情:
Date: <current time>
Expires: <current time>
Cache-Control: …Run Code Online (Sandbox Code Playgroud) 我们的网络服务受到了一些Zalgo文本的影响,我正试图为未来提出一个很好的解决方案.我们的策略是接受所有用户输入并将其保存在永久存储中(我们正确编码后端的输入,因此这部分是可以的).在输出阶段,我们通过带有白名单的过滤器/解析器运行原始用户输入,以避免XSS攻击和其他混乱.最近有些用户找到了Zalgo的世界,他们只是喜欢给其他人带来麻烦.
正如我所看到的,Zalgo文本只是一段从预期容器中泄漏出来的Unicode文本.因此,我认为自动删除所有复杂的组合字符是过于激烈的防御.有没有人知道一个CSS技巧来强制Zalgo文本包含在给定的父元素中而没有一些令人讨厌的副作用?
例如,如果我有
<section class="userinput">
... user input here ...
</section>
Run Code Online (Sandbox Code Playgroud)
如何确保用户输入不会泄漏到边界之外section.userinput?我猜overflow: hidden或者clip: rect(...)可能是正确的答案,但你对这个用例有什么更好的了解吗?我最好仍然可以使用section.userinput { max-height: 200vh; }或类似的东西,以避免用户创建人为的长评论.如果某些评论超过200vh,则应该只有一个滚动条来评论该评论.通常情况下,整个页面应该只有一个滚动条.
请注意,我只是想在视觉领域解决问题.我非常乐意接受任何有效的UTF-8序列作为用户输入,如果一个混乱的用户评论导致该用户评论看起来像垃圾,我很好.我只是想避免那个垃圾溢满了整个地方.具体来说,我不打算在显示之前阻止zalgo文本或过滤类似zalgo的文本.
php ×3
git ×2
html ×2
javascript ×2
security ×2
android ×1
browser ×1
caching ×1
compression ×1
conflict ×1
css ×1
distributed ×1
eclipse ×1
file-io ×1
file-upload ×1
firefox ×1
gettext ×1
gzip ×1
history ×1
http ×1
localization ×1
mathjax ×1
merge ×1
mylyn ×1
performance ×1
proxy ×1
tinymce ×1
unicode ×1
zalgo ×1