当前位置: 网学 > 编程文档 > PHP > 正文

PHP代码审核的详细介绍

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/06/18
站攻击

由于 html 页面中,定义了一段 JS,根据用户的输入,显示一段 html 代码,攻击者可以在输入时,插入一段恶意脚本,最终展示时,会执行恶意脚本。DOM 跨站和以上两个跨站攻击的差别是,DOM 跨站是纯页面脚本的输出,只有规范使用 JAVASCRIPT,才可以防御。

恶意攻击者可以利用跨站脚本攻击做到:
(1) 盗取用户 cookie,伪造用户身份登录。
(2) 让浏览者被迫执行某页面操作,以用户身份向服务器发起请求,达到攻击目的。
(3) 结合浏览器漏洞,下载病毒木马到浏览者的计算机上执行。
(4) 衍生 URL 跳转漏洞。
(5) 让官方网站出现钓鱼页面。
(6) 蠕虫攻击
代码示例
直接在 html 页面展示“用户可控数据”,将直接导致跨站脚本威胁。
复制代码 代码如下:
<?
echo “<span>$newsname</span>”;
echo “<a href=“$gifurl”>$gifname</a>”;
echo “<input type=text name=user value=\”$username\”>”;
echo “<span style=‘$stylelayout''>”. htmlentities($context).”</span>”;
?>

这几种显示方式,都可能导致用户浏览器把“用户可控数据”当成 JS/vbS 脚本执行,或页面元素被“用户可控数据”插入的页面 HTML 代码控制,从而造成攻击。
解决方案
a) 在 HTML 中显示“用户可控数据”前,应该进行 htmlescape 转义。
复制代码 代码如下:
htmlspecialchars($outputString,ENT_QUOTES);

进行 html 转义应该按照以下列表进行转义:
复制代码 代码如下:
& --> &
< --> <
> --> >
" --> "
'' --> '

b) 在 javascript 中输出的“用户可控数据”,需要做 javascript escape 转义。
需要转义的字符包括:
复制代码 代码如下:
/ --> \/
'' --> \''
" --> \"
\ --> \\

c) 对输出到富文本中的“用户可控数据”,做富文本安全过滤(允许用户输出 HTML 的情况),防止富文本编辑器中存在脚本性的 script 代码。
SQL 注入(SQL Injection)

安全威胁
当应用程序将用户输入的内容,拼接到 SQL 语句中,一起提交给数据库执行时,就会产生 SQL 注入威胁。由于用户的输入,也是 SQL 语句的一部分,所以攻击者可以利用这部分可以控制的内容,注入自己定义的语句,改变 SQL 语句执行逻辑,让数据库执行任意自己需要的指令。通过控制部分 SQL 语句,攻击者可以查询数据库中任何自己需要的数据,利用数据库的一些特性,可以直接获取数据库服务器的系统权限。本来 SQL 注入攻击需要攻击者对 SQL 语句非常了解,所以对攻击者的技术有一定要求。但是几年前,已经出现了大量 SQL 注入利用工具,可以让任何攻击者,只要点几下鼠标,就能达到攻击效果,这使得 SQL 注入的威胁,极大增加。

SQL注入攻击的一般步骤:
1、攻击者访问有SQL注入漏洞的站点,寻找注入点
2、攻击者构造注入语句,注入语句和程序中的SQL语句结合生成新的sql语句
3、新的sql语句被提交到数据库中执行 处理
4、数据库执行了新的SQL语句,引发SQL注入攻击



代码示例
对于输入检查不充分,导致 SQL 语句将用户提交的非法数据当作语句的一部分来执行。
示例:
复制代码 代码如下:
<?
$id= PHP代码审核的详细介绍_网学

浏览:
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
GET[''id''];
$name= PHP代码审核的详细介绍_网学
浏览:
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号
GET[''name''];
$sql="select * from news where `id`=$id and `username`=''$name'' ";
?>

解决方案
a)安全配置与编码方式,PHP 配置选项在 php.ini 文件中指定。下列配置方式能够加强php 的安全性,使应用程序避免受到 sql injection 的攻击。
1) safe_mode=onPHP,将通过文件函数或其目录检查当前脚本的拥有者是否和将被操作的文件的拥有者相匹配 ,当前脚本拥有者和文件操作拥有者不匹配则为违法操作
2) magic_quotes_gpc=on / off,如果该选项被激活,那么请求参数中包含的任何单引号、双引号、反斜线和空字符都会
  • 下一篇资讯: 深入PHP FTP类的详解
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号