知识大全 如何书写安全的PHP代码[1]
Posted 数据库
篇首语:一身转战三千里,一剑曾当百万师。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何书写安全的PHP代码[1]相关的知识,希望对你有一定的参考价值。
如何书写安全的PHP代码[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
PHP是一个很容易学习的语言 许多人在没有任何编程背景下学习它作为一种去增加一些互动元素到他们的网站的方法 不幸的是 这往往意味着PHP程序员 尤其是那些较新的Web开发程序员 并没有觉察他们网站中潜在安全风险 这里是一些比较常见的安全问题 以及如何去避免它们
永远 永远信任你的用户
不能说足够的次数 你应该永远 永远 信任你的用户向你发送你期望的数据 我听到很多人回应 大概是 哦 没有恶意的人将对我的网站感兴趣 这就错了 这里总是有怀有恶意的用户可以利用一个安全漏洞 问题可以很容易被发现 因为一个用户无意中做错了
因此 所有网页的发展的戒律 我不能再压缩了的话就是 永远 永远 相信你的用户 假定你的网站从使用者收集的每片数据含有恶意代码 始终 你认为已经检查客户端验证的这些数据 例如在JavaScript 如果你能够达到这个目标 你应该有了一个良好的开端 如果PHP的安全性很重要 这一点就要重要地学习 个人来说 PHP安全 是一个重大的问题
全局变量
在许多语言 你必须明确地设定一个变量以使用它 在PHP中 有一个选项 register_globals 你可以在php ini中设置 让你可以使用全局变量 而不需要事先声明
考虑下面的代码
if ($password == my_password ) $authorized = ;
if ($authorized == ) echo Lots of important stuff ;
许多人看上去觉得没什么问题 而事实上 这方面的代码在整个网站上应用 但是 如果一个服务器开启 register_globals 然后 只需添加 ?authorized= 的URL将让任何人都看到 这是一个最普遍的PHP的安全问题
所幸的是 这有两个简单的解决办法 第一 也许最好的 就是把 register_globals 关闭 二是你必须明确只有你使用变量 在上面的例子中 这将意味着加入 ?authorized= ; 在脚本的开始
$authorized = ;if ($password == my_password ) $authorized = ;if ($authorized == ) echo Lots of important stuff ;错误信息
错误信息是一个非常有用的工具 无论是程序员和黑客 开发者需要它们去改正错误 黑客可以利用它们来找出一个网站的各种信息 从目录结构的服务器 数据库登录信息 如果可能的话 最好是关闭所有的错误报告 PHP可以完成这项工作 htaccess或php ini 设置 error_reporting 的值改为 如果你有一个开发环境 您可以设定不同的错误报告级别
SQL注入
PHP的一个最大优点就是 它可以方便地与数据库中操作 最显著的MySQL的 很多人使用这个数据库 不少网站 包括这一个 依赖于数据库的函数 然而 正如你所料 有这么大的权力你就要够面对庞大的潜在安全问题 所幸的是 有很多解决办法 最常见面安全问题是一个数据库 SQL注入 当用户利用一个安全故障在你的数据库运行SQL语句 让我们用一个常见的例子 许多登录系统具有以下特点:一条线 看起来象不像是在检查从表单输入的用户名和密码 比如去控制访问一个管理员区
$check = mysql_query( Select Username Password UserLevel FROM Users Where Username = $_POST[ username ] and Password = $_POST[ password ] );看上去很眼熟? 就表面看来 它好像做得不错 上述并不像可以做许多破坏 但话又说回来 我在 username 输入框输入这样的值并提交
或者 = #
这个执行语句现在是这个样子
elect Username Password FROM Users Where Username = or = # and Password = ;散列符号(#)告诉MySQL的它之后一切 都会被忽略 所以实际上只是执行的SQL到这一点 永远等于 所以SQL将从数据库返回所有的用户名和密码 在大多数用户登录数据库的首个户名和密码组合都是管理员用户 他干脆输入了几个符号作为管理员已登录你的网站 果他们其实都知道的用户名和密码 他们会有同样的权力如
一个小创意 上述情况可以进一步发挥 让用户建立自己的登录帐号 阅读信用卡号码 甚至删除数据库
cha138/Article/program/PHP/201311/21437相关参考
PHP安全检测代码片段(分享) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本篇文章是对PHP安全
PHP本身再老版本有一些问题比如在php和php以前有一些比较严重的bug所以推荐使用新版另外目前闹的轰轰烈烈的SQLInjection也是在PHP上有很多利用方式所以要保证安全PHP代码编写是一
PHP文件上传代码用法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! php文件上传代码编写过程
复制代码代码如下:$t=microtime(true);//执行代码$t=microtime(true);echo耗时round($t$t)秒;cha138/Article/pr
本篇文章是对phpios推送进行了详细的分析介绍需要的朋友参考下 复制代码代码如下:cha138/Article/program/PHP/201311/20950
一在javascript中嵌入php代码 javascript若是通过js文件包含进来的那么js文件中也可以直接写php代码只不过包含js文件是扩展名要改成php如 <scripther
PHP随机获得字符代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!<?php//获取随机字
PHPWeb开发学习实录:界定PHP代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 第章PH
20个实用PHP实例代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PHP可
这篇文章介绍了javascript中直接写php代码的方法有需要的朋友可以参考一下 一在javascript中嵌入php代码javascript若是通过js文件包含进来的那么js文件中也