跨站脚本攻击 (XSS)和SQL注入漏洞php排查解决方案

简介: 跨站脚本攻击 (XSS)和SQL注入漏洞php排查解决方案

漏刻有时采用PHP-MVC结构,在参数传递过程中,已做参数过滤。

如正常的访问路径如下:

http://test.com/?m=Surveyor&a=apply

在实际进行脚本攻击的时候会使用


跨站脚本攻击 (XSS)

http://test.com/?m=Surveyor&a=apply<script>alert(1)</script>

如果调用的方法未进行安全过滤,则在访问的过程中会弹出javascript弹窗,则表明存在漏洞。


漏洞为害

1.窃取管理员帐号或Cookie,入侵者可以冒充管理员的身份登录后台。使得入侵者具有恶意操纵后台数据的能力,包括读取、更改、添加、删除一些信息。

2.窃取用户的个人信息或者登录帐号,对网站的用户安全产生巨大的威胁。例如冒充用户身份进行各种操作。

3.网站挂马。先将恶意攻击代码嵌入到Web应用程序之中。当用户浏览该挂马页面时,用户的计算机会被植入木马。


解决方案

  1. 1.表单提交或者url参数传递前,对需要的参数进行过滤;
  2. 2.增加前后端验证机制;


后端安全过滤函数

解决参数在传送的过程中,使用

/**
 * 安全过滤函数
 *
 * @param $str
 * @return $string
 */
function safe_replace($str)
{
    $string = str_replace('%20', '', $str);
    $string = str_replace('%27', '', $string);
    $string = str_replace('%2527', '', $string);
    $string = str_replace('*', '', $string);
    $string = str_replace('"', '"', $string);
    $string = str_replace("'", '', $string);
    $string = str_replace('"', '', $string);
    $string = str_replace(';', '', $string);
    $string = str_replace('<', '', $string);
    $string = str_replace('>', '', $string);
    $string = str_replace("{", '', $string);
    $string = str_replace('}', '', $string);
    $string = str_replace('\\', '', $string);
    return $string;
}
/*
 * 变量传递值函数
 * @param $str 变量值
 */
function get_param($str)
{
    $string = safe_replace($_GET[$str]);
    if ($string == '0') {
        $val = '0';
    } else {
        $val = !empty($string) ? $string : null;
    }
    return $val;
}


SQL注入漏洞

http://test.com/index.php?m=Manager&a=examineAdmin&act=examine&pro_id=914&pro_types=1
  • m=Manager,使用get_param过滤;
  • a=examineAdmin,使用get_param过滤;
  • act=examine,使用get_param过滤;
  • pro_id=914,使用get_safe过滤;
  • pro_types=1,使用get_safe过滤;
//判断是否是整数类型
function get_safe($str)
{
    $num = $_GET[$str];
    if (is_numeric($num)) {
        return $num;
    } else {
        redirect("index.php?m=Pop&a=tips&act=tips&tips_id=7");
    }
}


逻辑漏洞

漏洞说明:使用默认密码登录系统后,在强制修改密码时,存在手机验证码验证机制,但手机验证码可以使用bp拦截工具进行获取。从而得到修改密码的功能。获取验证码时抓包再进行抓回包


在登录平台、忘记密码时,系统采用手机短信验证码功能。系统生成验证码是,采用的cookies,而非session全局变量,由此导致浏览器端可以通过F12或bp拦截工具获取系统的验证码而不通过手机。

解决方案:

       session_start();
       $rmdCode = rand(111111, 999999);//随机验证码
        $_SESSION['code'] = $rmdCode;
 //登录成功后自动销毁;
    session_destroy();


密码强度

增加密码强度,强制注册时必须包含必须同时包含字母和数字且至少6位。

,pass: [/(?=.*[0-9])(?=.*[a-zA-Z]).{6,30}/, '密码必须同时包含字母和数字且至少6位']


@lockdata.cn

相关文章
|
1月前
|
安全 网络安全 数据安全/隐私保护
XSS 漏洞可能会带来哪些危害?
【10月更文挑战第26天】XSS漏洞可能会给网站和用户带来诸多严重危害
|
1月前
|
存储 监控 安全
|
24天前
|
SQL 监控 安全
Flask 框架防止 SQL 注入攻击的方法
通过综合运用以上多种措施,Flask 框架可以有效地降低 SQL 注入攻击的风险,保障应用的安全稳定运行。同时,持续的安全评估和改进也是确保应用长期安全的重要环节。
142 71
|
22天前
|
SQL 安全 Java
除了Flask框架,还有哪些框架能防止SQL注入攻击?
这些框架都在安全方面有着较好的表现,通过它们的内置机制和安全特性,可以有效地降低 SQL 注入攻击的风险。然而,无论使用哪个框架,开发者都需要具备良好的安全意识,正确配置和使用框架提供的安全功能,以确保应用的安全可靠。同时,持续关注安全更新和漏洞修复也是非常重要的。
38 7
|
1月前
|
SQL 安全 前端开发
Web学习_SQL注入_联合查询注入
联合查询注入是一种强大的SQL注入攻击方式,攻击者可以通过 `UNION`语句合并多个查询的结果,从而获取敏感信息。防御SQL注入需要多层次的措施,包括使用预处理语句和参数化查询、输入验证和过滤、最小权限原则、隐藏错误信息以及使用Web应用防火墙。通过这些措施,可以有效地提高Web应用程序的安全性,防止SQL注入攻击。
53 2
|
1月前
|
SQL 安全 前端开发
让你彻底了解SQL注入、XSS和CSRF
了解SQL注入、XSS和CSRF
53 7
|
1月前
|
存储 JSON 安全
2024全网最全面及最新的网络安全技巧 二 之 CSRF+XSS漏洞的各类利用技巧
2024全网最全面及最新的网络安全技巧 二 之 CSRF+XSS漏洞的各类利用技巧
|
1月前
|
SQL 存储 安全
什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?
理解并防范XSS、SQL注入和CSRF攻击是Web应用安全的基础。通过采用严格的输入验证、使用安全编码实践以及实现适当的身份验证和授权机制,可以有效防止这些常见的Web攻击,保障应用程序和用户的数据安全。
42 0
|
2月前
|
Web App开发 安全 关系型数据库
xss漏洞原理(五)BeEF
xss漏洞原理(五)BeEF
|
2月前
|
安全
xss漏洞原理(五)BeEF
xss漏洞原理(五)BeEF

热门文章

最新文章