帆软通过JavaScript注入sql,实现数据动态查询

将sql语句设置为参数

  1. 新建数据库查询
    新建数据库查询
  2. 设置数据库查询的sql语句
    设置数据库查询的sql语句
  3. 添加控件
    添加控件

JavaScript实现sql注入

  1. 添加事件
    添加事件
  2. 编写JavaScript代码
//获取评价人id
var pjrid = this.options.form.getWidgetByName("id").getValue();//显示评价人id
alert("评价人:" + pjrid);//根据评价人id获取评价人的个人信息
var name = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",2,1)');
var class1 = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",3,1)');
var spe = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",4,1)');
var post = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",5,1)');
var num = FR.remoteEvaluate('=sql("数据连接名","select * from 数据库名.表名 where id=\'' + pjrid + '\'",6,1)');//显示评价人信息
alert("姓名:" + name + "\n" + "身份:" + post + "\n" + "班组:" + class1 + "\n" +  "小组:" + num + "\n" +"专业:" + spe + "\n");//str设置默认值,str值注入sql
var str="select * from 数据库名.表名 where id=0 ";//将本人的个人信息筛掉
var beside="and id!="+pjrid;switch (post) {case "组长":str = "select * from 数据库名.表名 where post='组长' "break;case "修理工":if (class1 == "长白班") {str = "select * from 数据库名.表名 where (post='修理工' or post='技术员') and spe=\'"+ spe+"\'"} else {str = "select * from 数据库名.表名 where post='修理工' and class=\'"+ class1+"\'and spe=\'"+spe+"\' and num=\'"+num+"\'"}break;case "技术员":str = "select * from 数据库名.表名 where (post='修理工' or post='技术员') and spe=\'"+ spe+"\'"break;default:alert("无评价权限")
}//字段拼接
str=str+beside;//将str注入到sql中
_g().getParameterContainer().getWidgetByName("sql").setValue(str);

FR.remoteEvaluate('=sql("jb","select * from 数据库名.表名 where id=\'' + pjrid + '\'",2,1)');

用远程公式 FR.remoteEvaluate('=公式')来执行函数

帆软中sql函数的用法

_g().getParameterContainer().getWidgetByName("sql").setValue(str);

1)首先用全局接口 _g() 获取报表对象。
2)因为要获取参数面板上控件,所以先要获取到参数面板,使用 _g() 的 getParameterContainer 方法获取参数面板对象,即:
_g().getParameterContainer
3)获取到参数面板后,再获取参数面板上的「文本框」控件,使用参数面板的 getWidgetByName 接口获取控件,即:
_g().getParameterContainer().getWidgetByName(“sql”)

帆软中的JS API

报表安全设置

若不进行安全设置,则会报错
安全提示

确定数据库安全级别可以使用sql注入,如果涉及一些机密数据,不建议使用此方法(避免遭受sql注入攻击)

  1. 打开报表平台管理
    打开报表平台管理
  2. 关闭脚本调用公式限制
    关闭脚本调用公式限制
  3. 关闭对特殊关键字的禁用
    关闭对特殊关键字的禁用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/55009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

re轻松拆分四则运算expression(^从头匹配、(?:xxxx)非捕获组、| 交替运算符联合演习)

与ai对抵聊“算式匹配”,发现^从头匹配、(?:xxxx)非捕获组、| “交替”运算符联合使用的妙处。 (笔记模板由python脚本于2024年09月27日 18:35:32创建,本篇笔记适合喜欢python喜欢正则的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:…

【RabbitMQ】死信队列、延迟队列

死信队列 死信,简单理解就是因为种种原因,无法被消费的消息。 有死信,自然就有死信队列。当一个消息在一个队列中变成死信消息之后,就会被重新发送到另一个交换器中,这个交换器就是DLX(Dead Letter Excha…

连锁收银系统的五大功能 选择开源收银系统三要素

连锁收银系统的五大功能,很多新手是不清楚的,老手也只是知道一些大概,今天,商淘云为大家分享收银系统的五大功能,尤其是第五个,大部分人不清楚,有的企业前面选了不合适的收银系统,导…

如何在iPad上设置Chrome为默认浏览器

将Chrome设置为iPad上的默认浏览器,不仅能够享受到谷歌强大的搜索功能和丰富的扩展生态,还能通过一系列自定义设置来进一步提升浏览体验。本文将详细介绍如何在iPad上完成这一设置,并探讨如何通过优化Chrome浏览器的相关功能,让您…

c语言200例 64

大家好,欢迎来到无限大的频道。 今天带领大家来学习c语言。 题目要求: 设计一个进行候选人的选票程序。假设有三位候选人,在屏幕上输入要选择的候选人姓名, 有10次投票机会,最后输出每个人的得票结果。好的&#xff…

【LLM多模态】视频理解模型Cogvlm-video和MVBench评测基准

note Cogvlm-video模型通过视频抽帧(24帧,每帧大小为224 x 224)后经过ViT进行图像编码(ViT中添加了2x2的卷积核更好的压缩视觉信息),使用adapter模块更好的将视觉特征和文本特征对齐,得到的图像…

5--苍穹外卖-SpringBoot项目中菜品管理 详解(一)

目录 公共字段自动填充 问题分析 实现思路 代码开发 步骤一 步骤二 功能测试 新增菜品 需求分析和设计 代码开发 文件上传接口 功能测试 1--苍穹外卖-SpringBoot项目介绍及环境搭建 详解-CSDN博客 2--苍穹外卖-SpringBoot项目中员工管理 详解(一&#…

python绘制图像

柱状图 import os# 输入想要存储图像的路径 os.chdir(D:)import matplotlib.pyplot as plt import numpy as np # 改变绘图风格 import seaborn as snssns.set(color_codesTrue)cell [gen7, xgspon, 3081GB, vettel, totalplay, other] pvalue [21, 20, 18, 13, 7, 34]width…

【GUI设计】基于图像分割的GUI系统(6),matlab实现

博主简介: 如需获取设计的完整源代码或者有matlab图像代码项目需求/合作,可联系主页个人简介提供的联系方式或者文末的二维码。博客内容有疑问可联系沟通(博主邮箱:3249726188qq.com)。 ~~~~~~~~~~~~~~~~~~~~~~~…

实现简易 vuedraggable 的拖拽排序功能

一、案例效果 拖拽计数4实现手动排序 二、案例代码 <draggable:list"searchResult.indicator":group"{ name: indicators }"item-key"field"handle".drag-handle-icon"><divclass"field-item"v-for"(item…

快速创建第一个Spring Boot 项目

一、介绍 Spring Boot 是一个开源的 Java 基础框架&#xff0c;它基于 Spring 框架&#xff0c;用于创建独立、生产级别的基于 Spring 的应用程序&#xff0c;你可以“跑起来”&#xff08;run&#xff09;你的 Spring 应用程序。Spring Boot 让基于 Spring 的应用开发变得更容…

对onlyoffice进行定制化开发

基于onlyoffice8.0源码&#xff0c;进行二次开发&#xff0c;可实现包括但不限于以下的功能 1、内容控件的插入 2、内容空间的批量替换 3、插入文本 4、插入图片 5、添加&#xff0c;去除水印 6、修改同时在线人数限制 7、内容域的删除 8、页面UI的定制化 9、新增插件开发 10、…

生信初学者教程(四):软件

文章目录 RRstudioLinux系统其他软件本书是使用R语言编写的教程,用户需要下载R和RStudio软件用于进行分析。 版权归生信学习者所有,禁止商业和盗版使用,侵权必究 R R语言是一种免费的统计计算和图形化编程语言,是一种用于数据分析和统计建模的强大工具。它具有丰富的统计…

C语言 | Leetcode C语言题解之第429题N叉树的层序遍历

题目&#xff1a; 题解&#xff1a; #define MAX_LEVE_SIZE 1000 #define MAX_NODE_SIZE 10000int** levelOrder(struct Node* root, int* returnSize, int** returnColumnSizes) {int ** ans (int **)malloc(sizeof(int *) * MAX_LEVE_SIZE);*returnColumnSizes (int *)mal…

ArcGIS Desktop使用入门(三)常用工具条——拓扑(下篇:地理数据库拓扑)

系列文章目录 ArcGIS Desktop使用入门&#xff08;一&#xff09;软件初认识 ArcGIS Desktop使用入门&#xff08;二&#xff09;常用工具条——标准工具 ArcGIS Desktop使用入门&#xff08;二&#xff09;常用工具条——编辑器 ArcGIS Desktop使用入门&#xff08;二&#x…

WordPress最佳恶意软件扫描插件:入门级指南

在现代互联网环境中&#xff0c;网站安全已经成为每个网站管理员必须重视的问题。特别是对于使用WordPress的用户来说&#xff0c;由于其普及度高&#xff0c;WordPress网站常常成为黑客的首要攻击目标。幸运的是&#xff0c;有许多优秀的恶意软件扫描插件可以帮助我们保护网站…

[附源码]网上订餐系统+SpringBoot+前后端分离

今天带来一款优秀的项目&#xff1a;网上订餐系统源码 。 系统采用的流行的前后端分离结构&#xff0c;包含了“管理端”&#xff0c;“商家管理端”&#xff0c;“用户购买端” 如果您有任何问题&#xff0c;也请联系小编&#xff0c;小编是经验丰富的程序员&#xff01; 一.…

[000-002-01].第29节:MySQL数据库缓冲池

1、什么是数据缓冲池&#xff1a; 1.InnoDB 存储引擎是以页为单位来管理存储空间的&#xff0c;我们进行的增删改查操作其实本质上都是在访问页面&#xff08;包括读页面、写页面、创建新页面等操作&#xff09;&#xff0c;而磁盘 I/O 需要消耗的时间很多&#xff0c;而在内存…

【Python报错已解决】TypeError: tuple indices must be integers or slices, not str

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 7 推送卡片刷新消息

场景介绍 如今衣食住行娱乐影音应用占据了大多数人的手机&#xff0c;一部手机可以满足日常大多需求&#xff0c;但对需要经常查看或进行简单操作的应用来说&#xff0c;总需要用户点开应用体验较繁琐。针对此种场景&#xff0c;HarmonyOS提供了Form Kit&#xff08;卡片开发服…