最近做完项目时,甲方对系统有要过安全等保三级的要求,这里针对我所编写的模块遇到的前端代码扫描出现的sql注入问题,给出部分解决方案。

错误示例

请求api时,参数未加效验;

 let _obj ={pageSize: pageSize,pageNum: pageNum,sort: sort,type:pharType,};return api.callApi("/navmark/sx_phar/list", _obj).then((res) => {dataList.value =setPharImg(res.data);  data.cur_id="";});

此时扫描的错误为:
Web应用程序对用户输入数据的合法性没有进行判断和过滤,攻击者可以通过控制可控参数来构造不同的SQL语句来实现对数据库的任意操作。比如查询、删除,增加,修改数据等等,严重时还可以对操作系统执行命令。

正确操作

前端校验:

 let _obj ={pageSize: pageSize,pageNum: pageNum,sort: sort,type:pharType,};let flag =checkSqlsIn(_obj);if(flag){proxy.$modal.msgError("存在非法输入");return}return api.callApi("/navmark/sx_phar/list", _obj).then((res) => {dataList.value =setPharImg(res.data);  data.cur_id="";});//SQL注入常见字符
var sqlKeyWords = "select ,union ,asc ,desc ,in ,like ,into ,exec ,from ";
sqlKeyWords += ",update ,insert ,delete ,count ,asc( ,char( ,chr( ,drop ,table ,truncat ";
sqlKeyWords += ",mid( ,abs( ,= ,-- ,<script ,/script ";
sqlKeyWords += ",where ,join ,create ,alter ,cast ,exists ,; , or , and ,order by ,group by ";
//分割成数组
var sqls = sqlKeyWords.split(",");function checkSqlsIn(_obj) {let lxdInput = JSON.stringify(_obj);let invalid = false;let chkInput = (lxdInput + "").toLowerCase();let pos = -1;for (let i = 0, n = sqls.length; i < n; i++) {pos = chkInput.indexOf(sqls[i]);if (pos != -1) {invalid = true;break;}}return invalid;
}

对提交的参数进行合法化效验,上面的校验只是匹配了部分sql常见字符。其他的自行补充
后端校验:后端使用不同语言的可能校验方式可能有所区别,大概思路类似,要么预编译sql语句,要么先校验参数合法性。

前端参数效验防止sql注入的方法相关推荐

  1. mysql 8.0 自定义函数_PHP+Mysql防止SQL注入的方法(life)

    这篇文章介绍的内容是关于PHP+Mysql防止SQL注入的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 我的官方群点击此处. 方法一: mysql_real_escape_str ...

  2. mysql 防注入 php_PHP+mysql防止SQL注入的方法小结

    本文实例讲述了PHP+mysql防止SQL注入的方法.分享给大家供大家参考,具体如下: SQL注入 例:脚本逻辑 $sql = "SELECT * FROM user WHERE useri ...

  3. decimal转为string sql_PHP+Mysql防止SQL注入的方法

    这篇文章介绍的内容是关于PHP+Mysql防止SQL注入的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 我的官方群点击此处. 方法一:[1] mysql_real_escape_ ...

  4. mysql简单防注入_mysql防止sql注入的方法

    mysql防止sql注入的方法 发布时间:2020-08-25 14:07:29 来源:亿速云 阅读:98 作者:小新 这篇文章将为大家详细讲解有关mysql防止sql注入的方法,小编觉得挺实用的,因 ...

  5. java开发中推荐的防御sql注入方法_防御SQL注入的方法总结

    SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难. SQL 注入漏洞存在的原因,就是拼接 SQL 参数.也就是将用于输入的查询参数,直接拼接在 SQL 语句中,导致 ...

  6. SQL注入原理及预防SQL注入的方法

    网络安全成为了现在互联网的焦点,这也恰恰触动了每一位用户的神经,担心网上的信息以及个人隐私遭到泄露.下面要为大家介绍的是SQL注入,对于sql注入,相信程序员都知道或者使用过,如果没有了解或完全没有听 ...

  7. sql注入修复方法是_旧的方法是修复我们可以看到的内容。

    sql注入修复方法是 When envisioning the futurestate of a company or a service, we're usually faced with the ...

  8. php防止sql注入处理方法

    解决的办法是将php.ini的magic_quotes_gpc设置为Off 在php.ini的magic_quotes_gpc=On的情况下,如果输入的数据有单引号(').双引号(").反斜 ...

  9. mysql node null_node-mysql中防止SQL注入的方法总结

    SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. node-mysql中防止S ...

最新文章

  1. 一文搞定深度学习建模预测全流程(Python)
  2. IDEA 打可执行jar包(maven项目)
  3. 二阶传递函数的推导及几种求解方法的比较
  4. Animation Property Animation 使用
  5. NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
  6. Webservice检查
  7. linux怎么查看进程的套接字,linux – 如何找到哪个进程绑定套接字而不是监听?...
  8. 外部PLC触发VisionMaster多流程运行PLC部分特殊说明
  9. C语言之结构体 共用体 枚举 typedef
  10. 基于python技术的酒店管理系统
  11. CC13X0CC26X0EvaluationBoard
  12. 青果教务系统API(Java版)
  13. Android GC日志
  14. 股票融资全面解决方案
  15. 多数组对象转为json数组格式
  16. 常见的数组及对象常用方法
  17. Xshell7如何查看登录密码
  18. 医院计算机招聘笔试内容是什么,医院招聘考试的“内幕”难道你不想知道吗?...
  19. 转载(https://blog.csdn.net/qq_36738482/article/details/72823509)大数据的概念
  20. runtime vc11 ds simulia suite

热门文章

  1. matlab中zoom是什么意思,cad中zoom是什么意思
  2. R语言中的遗传算法详细解析
  3. sublime 学习笔记之ubuntu下让sublime text 3成为默认编辑器
  4. 基于区块链的医疗记录存储系统研究与开发
  5. mock模拟导致测试失败的解决方法
  6. FastDFS分布式文件系统_Linux
  7. vue中动态请求URL乱码
  8. MS SQL 2016数据库安装部署步骤
  9. 计算机组成与体系结构第二次试验:存储器实验
  10. 安利,拥有这5款甘特图工具,项目管理、生产排程轻松解决