【奇安信安全漏洞】XSS漏洞 重定向漏洞解决及产生分析!_奇安信漏洞

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

既然都明确说明了是从客户端获取的数据,需要校验后才可以使用,那思路就清晰了。如何校验呢?也并不是简单的校验字符而已!

示例:

//客户端获取值
var actionValue = $("#action").val();
//filterForDOMXSS函数用来过滤值
var modeFlag = 0
var sanitizedActionValue = filterForDOMXSS(actionValue,modeFlag);
var encodedActionValue = sanitizedActionValue.value;
var url = "../../../ReportAction.do?action=" + encodedActionValue;
window.location.href = url;


//此函数用来自定义校验获取到的值的内容
function filterForDOMXSS(value,modeFlag) {
  var searchStatus = false;
        // 过滤关键词,后续可以继续加
        var crucialword = ['javascript',"eval","alert","onclick","ondbclick","onmousedown","onmouseup","onmouseover","onmouseout","onmousemove","onkeydown","onkeyup","onkeypress","<script+.*>","<p+.*>","<a+.*>","<img+.*>","<h+.*>","<textarea+.*>","<span+.*>","<div+.*>","<td+.*>","<tr+.*>","<th+.*>","<li+.*>","<ul+.*>","<option+.*>","<select+.*>","<del+.*>","<ol+.*>","<label+.*>","<button+.*>","<style+.*>","<em+.*>","<strong+.*>","<strike+.*>","<b+.*>","<s+.*>","<u+.*>","<sub+.*>","<sup+.*>","<small+.*>","<dl+.*>","<dt+.*>","<i+.*>","<pre+.*>","<q+.*>","<blockquote+.*>","<br+.*>","<code+.*>","<cite+.*>","\\$\\(+.*\\)"];
        for(var i = 0;i<crucialword.length;i++){
            var check = new RegExp(crucialword[i],"gi");
            if(check.exec(value)){
                searchStatus = true;
                break;
            }
        }
        if(searchStatus){
            value = value.replace(/javascript/gi,"")
            .replace(/eval/gi,"")
            .replace(/alert/gi,"")
            .replace(/onclick/gi,"")
            .replace(/ondbclick/gi,"")
            .replace(/onmousedown/gi,"")
            .replace(/onmouseup/gi,"")
            .replace(/onmouseover/gi,"")
            .replace(/onmouseout/gi,"")
            .replace(/onmousemove/gi,"")
            .replace(/onkeydown/gi,"")
            .replace(/onkeyup/gi,"")
            .replace(/onkeypress/gi,"")
            // 仅过滤标签模式
            if(modeFlag == 0){
                value = value.replace(/<script+.*>/gi,"")
                .replace(/<p+.*>/gi,"")
                .replace(/<a+.*>/gi,"")
                .replace(/<img+.*>/gi,"")
                .replace(/<h+.*>/gi,"")
                .replace(/<textarea+.*>/gi,"")
                .replace(/<span+.*>/gi,"")
                .replace(/<div+.*>/gi,"")
                .replace(/<td+.*>/gi,"")
                .replace(/<tr+.*>/gi,"")
                .replace(/<th+.*>/gi,"")
                .replace(/<li+.*>/gi,"")
                .replace(/<ul+.*>/gi,"")
                .replace(/<option+.*>/gi,"")
                .replace(/<select+.*>/gi,"")
                .replace(/<del+.*>/gi,"")
                .replace(/<ol+.*>/gi,"")
                .replace(/<label+.*>/gi,"")
                .replace(/<button+.*>/gi,"")
                .replace(/<style+.*>/gi,"")
                .replace(/<em+.*>/gi,"")
                .replace(/<strong+.*>/gi,"")
                .replace(/<strike+.*>/gi,"")
                .replace(/<sub+.*>/gi,"")
                .replace(/<sup+.*>/gi,"")
                .replace(/<small+.*>/gi,"")
                .replace(/<dl+.*>/gi,"")
                .replace(/<dt+.*>/gi,"")
                .replace(/<i+.*>/gi,"")
                .replace(/<pre+.*>/gi,"")
                .replace(/<q+.*>/gi,"")
                .replace(/<blockquote+.*>/gi,"")
                .replace(/<br+.*>/gi,"")
                .replace(/<code+.*>/gi,"")
                .replace(/<cite+.*>/gi,"")
            }else if(modeFlag == 1){
                // 过滤符号模式
                value = value.replace(/</g,"")
                .replace(/&lt;/g,"")
                .replace(/gt&;/gi,"")
                .replace(/\$\(\)/g,"");
            }else if(modeFlag ==2){
                // 全过滤模式,不推荐使用
                value = value.replace(/<\w+.*>/g,"");
            }
            return {"value":value,"status":searchStatus,"Message":"系统监测到有恶意代码输入,请注意您的行为"}
        }else{
            return{"value":value,"status":searchStatus,"Message":""}
        }

在上述修复代码中,我们引入了一个名为filterForDOMXSS()的函数,用于对输入值进行清理和验证。这个函数可以执行以下操作:

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以联系领取~

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
① 工具

② 视频

image1

③ 书籍

image2

资源较为敏感,未展示全面,需要的最下面获取

在这里插入图片描述在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的修复输入验证和文件上传漏洞的示例代码: 1. 输入验证漏洞修复: ```php function validate_input($input) { // 检查输入是否为空 if (empty($input)) { return false; } // 检查输入是否包含非法字符 if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $input)) { return false; } // 使用过滤器对输入进行验证 $filtered_input = filter_var($input, FILTER_SANITIZE_STRING); if ($filtered_input !== $input) { return false; } // 检查输入是否符合预期格式 // ... return true; } ``` 上述代码中,我们使用了 PHP 内置的过滤器函数 `filter_var` 来过滤输入中的非法字符,以避免 XSS 攻击等安全漏洞。 2. 文件上传漏洞修复: ```php function upload_file($file) { // 检查文件是否为空 if (empty($file)) { return false; } // 检查文件类型是否符合预期 $allowed_types = array('jpg', 'jpeg', 'png', 'gif'); $file_type = pathinfo($file['name'], PATHINFO_EXTENSION); if (!in_array($file_type, $allowed_types)) { return false; } // 检查文件大小是否符合预期 $max_size = 1024 * 1024; // 1MB if ($file['size'] > $max_size) { return false; } // 检查上传文件的 MIME 类型是否符合预期 $finfo = finfo_open(FILEINFO_MIME_TYPE); $file_mime_type = finfo_file($finfo, $file['tmp_name']); if (!in_array($file_mime_type, $allowed_types)) { return false; } finfo_close($finfo); // 为上传文件生成新的文件名,并存储到安全目录 $new_file_name = uniqid() . '.' . $file_type; $upload_dir = '/path/to/secure/upload/dir/'; if (!move_uploaded_file($file['tmp_name'], $upload_dir . $new_file_name)) { return false; } return true; } ``` 上述代码中,我们使用了 PHP 内置的函数 `finfo` 来检查上传文件的 MIME 类型,以避免文件头伪造等安全漏洞。同时,我们还对上传文件保存的位置进行了限制,以确保文件存储在安全的目录中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值