在很多网站中 特别是在论坛系统中 往往存在文件上传的功能 文件上传功能允许用户将本地的文件通过Web页面提交到网站服务器上 但是如果不对用户的上传进行任何限制的话 可能会对服务器造成很大的危害
一个简单的文件上传页面
以下代码是一个简单的文件上传页面 <?php if(isset($_POST[ form ])) { $uploadfile = upfiles/ $_FILES[ upfile ][ name ] //上传后文件所在的文件名和路径 move_uploaded_file($_FILES[ upfile ][ tmp_name ] $uploadfile) //上传文件 print_r($_FILES) //输出文件信息 die() } ?> <> <head> <title>文件上传</title> <meta equiv= Content Type content= text/charset=gb > </head> <H >文件上传</H > <form enctype= multipart/form data action= method= post > <input name= upfile type= file > <input name= form type= hidden value= form ><BR> <input type= submit value= Submit > </form> <body> </body> </> 上面的代码将文件上传到网站服务器并存储在upfiles文件夹下 但是 由于上面的文件上传程序没有对上传的文件进行任何检查 用户可以通过该程序上传自行编写的PHP脚本到服务器上并通过浏览器运行 由于PHP脚本潜在的危害性 该漏洞可能会导致服务器的彻底崩溃及数据的丢失 漏洞防护措施 解决上面所述问题的一种方法是通过检查上传文件的类型来限制用户的文件上传 如以下代码所示 <?php if(isset($_POST[ form ])) { if($_FILES[ upfile ][ type ] == image/pjpeg ) //检查文件类型是否为JPEG { $uploadfile = upfiles/ $_FILES[ upfile ][ name ] //上传后文件所在的文件名和路径 move_uploaded_file($_FILES[ upfile ][ tmp_name ] $uploadfile) //上传文件 print_r($_FILES) die() } else { die( 上传文件的格式不正确! ) } } ?>
lishixinzhi/Article/program/PHP/201311/21477PHP Everywhere 是一个开源的 WordPress 插件,它允许 WordPress 管理员在页面、帖子、侧边栏或任何 Gutenberg 块中插入 PHP 代码,并使用它来显示基于评估的 PHP 表达式的动态内容。
近日 Wordfence 安全研究员发现 PHP Everywhere 存在三个 RCE 漏洞,三个漏洞的 CVSS 评分全都达到 9.9(最高分 10 分),将会影响 2.0.3 及后续所有 WordPress 版本。
它们是 CVE-2022-24663、CVE-2022-24664 和 CVE-2022-24665。
目前全球有超过 3 万个网站使用该插件,攻击者可以利用该插件在受影响的系统上执行任意代码,大量 WP 网站面临风险。
三个漏洞的简短描述如下:
WordPress 所属公司 Wordfence 表示已在 1 月 4 日将问题告知该插件的作者 Alexander Fuchs,随后在 1 月 12 日发布新版本 3.0.0,完全删除了易受攻击代码。
该插件的更新说明页面指出,“3.0.0 版本的更新具有重大变化,删除了 PHP Everywhere 短代码和小部件。运行插件设置页面的升级程序,将旧代码迁移至 Gutenberg 块。”
值得注意的是,3.0.0 版本仅支持通过块编辑器的 PHP 代码片段,这意味着依赖于经典编辑器的用户必须卸载该插件并选择另一种使用自定义 PHP 代码的解决方案。
——此文章摘自《完全手册PHP网络开发详解》定价 ¥ 特价 ¥ 详细>>//track linktech cn/?m_id=dangdang&a_id=A &l= &l_type = width= height= border= nosave>漏洞的防护措施 为了解决前面所述的问题 可以在PHP代码中再次进行数据验证 修改后的代码如下所示 <?php if(isset($_POST[ username ])) { //在PHP中对用户名的合法性进行验证 $pattern = ([a zA Z_]) if(ereg($pattern $_POST[ username ])) //如果用户名符合规则 则输出用户名 { echo Username: $_POST[ username ] } else //否则提示错误 { echo 用户名格式非法! } } ?>
这样 即使用户通过其他页面向PHP脚本提交非法数据 PHP中的验证功能也会成功地拒绝这些非法数据
lishixinzhi/Article/program/PHP/201311/21498
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)