前端的“SQL注入”,处理含有html标签的字符串

前言

上个月写了一个老项目,用的语言是JQ,项目在测试的时候,遇到了测试人员的前端语言注入,在表单内容里输入了带有html标签的字符内容,导致列表崩溃。至今记忆尤深,今天看文章的时候看到了腾讯的这个方法,又重新写了一个demo。

核心方法

function htmlEncode(iStr) {
	let sStr = iStr;
	sStr = sStr.replace(/&/g, "&");
	sStr = sStr.replace(/>/g, ">");
	sStr = sStr.replace(/</g, "&lt;");
	sStr = sStr.replace(/"/g, "&quot;");
	sStr = sStr.replace(/'/g, "&#39;");
	return sStr;
}

该方法来自于腾讯的JavaScript安全指南

使用方法

const text = htmlEncode(value)

value:需要转换的字符串

Demo

效果

效果图

HTML
		<div class="content">
		
			<h3>新增表单</h3>
			<input id="a" type="text">
			<button type="submit" onclick="start()">保存</button>
			<p class="line"></p>
			
			<h3>列表</h3>
			<div id="list">
				<div class="box">
					<p>展示输入的数据</p>
				</div>
				<div class="box">
					<p>看看有没有影响</p>
				</div>
			</div>
			
			<button onclick="clearList()">清空</button>
		</div>
JS
		<script>
			function start() {
				const a = document.getElementById('a')
				const text = htmlEncode(a.value)
				const list=document.getElementById('list')
				let html=''
				html=`
					<div class="box">
						<p>展示输入的数据</p>
						<p>${text}</p>
					</div>
					<div class="box">
						<p>看看有没有影响</p>	
					</div>`
				list.innerHTML=html
			}
			
			function htmlEncode(iStr) {
				let sStr = iStr;
				sStr = sStr.replace(/&/g, "&amp;");
				sStr = sStr.replace(/>/g, "&gt;");
				sStr = sStr.replace(/</g, "&lt;");
				sStr = sStr.replace(/"/g, "&quot;");
				sStr = sStr.replace(/'/g, "&#39;");
				return sStr;
			}
			function clearList(){
				const list=document.getElementById('list')
				list.innerHTML=''
			}
		</script>
CSS
		<style>
			.content {
				width: 500px;
				margin: auto;
				border: 1px solid #ebeef5;
				box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
				text-align: center;
				border-radius: 4px;
				height: 1000px;
				overflow: auto;
			}

			input {
				border: 1px solid #ebeef5;
				padding: 7px 10px;
				border-radius: 4px;
				outline: none;
			}

			button {
				border: 1px solid #ebeef5;
				padding: 5px 10px;
				border-radius: 4px;
				margin-right: 10px;
				color: #fff;
				background-color: #409eff;
				border-color: #409eff;
			}
			.line{
				margin: 20px auto;
				border: 1px solid #ebeef5;
				box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
			}
			.list{
				text-align: center;
			}
			.box {
				width: 300px;
				height: 300px;
				box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
				text-align: center;
				line-height: 30px;
				border-radius: 4px;
				border: 1px solid #ebeef5;
				background-color: #fff;
				overflow: hidden;
				color: #303133;
				transition: .3s;
				letter-spacing: 3px;
				margin: 10px auto;
			}
		</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue前端中,为了防止SQL注入攻击,可以采取以下几种方法: 1. 使用参数化查询:在前端与后端的数据交互过程中,使用参数化查询(Prepared Statements)来构造SQL语句。通过预编译SQL语句,并将参数传递给数据库进行处理,可以有效地防止SQL注入攻击。例如,使用预编译类PreparedStatement来代替拼接字符串的方式构建SQL语句。 2. 对输入数据进行验证和过滤:在前端对用户输入的数据进行验证和过滤,确保只有合法的数据通过。可以使用正则表达式、白名单等方式对输入数据进行限制和过滤,防止恶意的SQL注入语句被执行。 3. 使用安全的框架和库:选择使用经过安全验证的框架和库,这些框架和库通常会提供一些安全机制和防护措施,帮助你有效地防止SQL注入攻击。 4. 限制数据库用户权限:在数据库层面,通过为数据库用户分配最小权限来限制其对数据库的操作范围,避免注入攻击对数据库的破坏。 总结起来,为了防止SQL注入攻击,需要在前端进行数据验证和过滤,使用参数化查询来构建SQL语句,并在数据库层面限制用户权限。这样可以有效地提高系统的安全性,防止SQL注入攻击的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [防止SQL注入](https://blog.csdn.net/u014644574/article/details/124452889)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [前端参数效验防止sql注入的方法](https://blog.csdn.net/weixin_43578304/article/details/127907126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值