PHP 安全设置 %5c magic_quotes_gpc GBK

安全问题。 今天看到一个朋友的blog上,写到PHP的安全设置,应该开启magic_quotes_gpc,避免SQL注入等。 可是,我在用Symfony开发时,文档上说应该关闭php.ini的magic_quotes_gpc,以前我不知道为什么,今天突然有些明白了。 这个设置,只能起到非常有限的安全作用,却有可能带来更严重的问题。 PHP的放置SQL注入,很多网站或教程上,都写着用addslashes或mysql_escape_string来过滤,或者用自动的magic_quote。这些函数的作用,就是查询字符串中的单引号、双引号和斜线”\”,在这些字符前面插入一个斜线”\”。 如果遇到了”頫運鳿黒靄錦鳿黒靄錦”这样的字符,而你的数据库、网页又是GBK编码的话,上面的3种过滤函数,都会给你带来麻烦,因为这些字符的第二个字节的编码,是%5c,恰好是”\”对应的编码。 原本是2个字节的汉字,被这些函数变成了3个字节,最后的2个字节是连续的”\”,而这第3个”\”会把后续的引号转义,因此SQL语句就会出错,导致更新无法执行。 安全建议: 设置php.ini,默认关闭magic_quotes_gpc 使用mysql_real_escape_string对字符串变量进行转义,注意,转义前判断magic_quotes_gpc是否已开启 使用utf-8编码,可以有效避免此类问题

PHP 文件下载 IE 无法打开页面

IE 又有一个弱得不行的问题让我发现! 有个项目,要限制文件的下载权限,只有注册用户才可以下载,用户登录后,点击下载链接,弹出保存附件的提示。 我用 PHP 写了一个下载类,支持断点续传的。 今天发现一个问题,在 IE 7 下,点击链接,可以弹出对话框,提示 “打开”、”保存” 和 “取消”,点击打开没问题,点击保存,却马上弹出错误提示 “该页面无法打开”! 这时可以注意到一个细节,弹出保存对话框的时候,正常情况下窗口左边会根据文件类型显示图标,而此时却是一个没有类型的默认图标。 […]

关注 Sphinx, Ratproxy

今天听到 2 个新名词,看看都挺感兴趣的,不过工作太忙,没时间仔细看,记下来,回家看~~ 一句话概括: Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL, PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。 Ratproxy: Google 的 XSS […]

Apache ReWrite UrlReWrite .htaccess

Apache的mod_rewrite是提供了强大URL操作的杀手级的模块,可以实现几乎所有你 梦想的URL操作类型,其代价是你必须接受其复杂性,因为mod_rewrite的主要障碍就是初学者不容易理解和运用,即使是Apache专家有时也会 发掘出mod_rewrite的新用途。 换句话说:对mod_rewrite,或者是打退堂鼓永不再用,或者是喜欢它并一生受用。 ReWrite可以应用在以下方面或者解决以下问题: URL的规划 规范的URL 说明: 在有些网站服务器上,一个资源会拥有多个URL,在实际应用和发布中应该被使用的是规范的URL,其他的则是简写或者是内部使用的。无论用户在请求中使用什么形式的URL,他最终看见的都应该是规范的URL。 方案: 对所有的不规范的URL执行一个外部的HTTP重定向,以改变它在浏览器地址栏中的显示及其后继的请求。下例中的规则集用规范的/u/user替换/~user,并修正了/u/user所遗漏的后缀的斜杠。 代码: RewriteRule   ^/~([^/]+)/?(.*)    […]

MySQL bin-log PURGE 清除日志

我有一个每天进行大量数据更新的程序,写数据库,用的是innoDB,而且开了bin-log,这段时间,写了几百G的日志,太大了,前一段时间设置过 expire-logs-days =3,但没有生效,不知为什么。 后来实在受不了,上网找了找,原来有另一个方法清除bin-log,且看中文版: PURGE {MASTER | BINARY} LOGS TO ‘log_name’ PURGE {MASTER | BINARY} […]

Javascript 获取 textarea 光标 文字 位置 内容 IE Firefox

Javascript 获取 textarea 光标 文字 位置 内容 IE Firefox 最近帮朋友做一个获取文字内容,并处理选中文字的Javascript程序。 本来上网查查,用Firefox搞定了,包括Opera、Safari,不过到IE那里遇到很多问题!!! 还发现了IE的一个Bug! 就是  var objRange  = […]