<script>alert('xxx');</script>

本文通过一个简单的示例展示了如何使用JavaScript进行代码注入。代码注入是一种常见的安全攻击手段,了解其工作原理对于防范此类攻击至关重要。文中提供的示例代码为&lt;script&gt;alert('xxx');&lt;/script&gt;,这将触发一个警告框显示文本'xxx'。

<script>alert('xxx');</script>sssssssssssss

转载于:https://www.cnblogs.com/saar/archive/2013/03/19/2970216.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>我的个人简介</title> <script> function msg(){ alert("感谢您的留言"); } </script> </head> <body> <h1 align="center">翁晓湘</h1> <p>我就读于福州工商学院,电子商务专业,是一名2023级的学生。以下是我的兴趣爱好:</p> <ul> <li>听歌</li> <li>看书</li> <li>弹琴</li> </ul> <img src="./blue.png" width="200" height="150" /><br> <a href="index.html" target="_blank">我的QQ</a> <table border="2" width="600" height="150"> <caption>成绩表</caption> <tr align="center"> <td>语文</td> <td>数学</td> <td>英语</td> </tr> <tr align="center"> <td>88</td> <td>89</td> <td>90</td> </tr> </table> <h1 align="center">联系我</h1> <form id="form1" name="form1" method="post" action=""> <table width="90%" border="0" align="center"> <tr> <td width="22%" align="right">姓名:</td> <td width="78%"> <input type="text" name="textfield" id="textfield" /></td> </tr> <tr> <td align="right">邮箱:</td> <td> <input type="email" name="textfield2" id="textfield2" /></td> </tr> <tr> <td align="right">咨询类型:</td> <td> <select name="select" id="select"> <option value="1">合作</option> <option value="2">求职</option> <option value="3">提问</option> </select></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" name="button" id="button" value="提交" />    <input type="reset" name="button2" id="button2" value="重置" /></td> </tr> </table> </form> </body> </html>在以上代码中添加下面三个功能,并将格式修改好看一些:当用户点击提交按钮时, 弹出警告框显示“感谢您的留言!”; 使用DOM操作将表单中输入的姓名显示在页面某个位置(如“最新留言者:XXX”); 使用location.href在页面底部添加一个按钮,点击后跳转到学校官网(或其他指定页面);
09-25
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <link rel="stylesheet" href="static\login.css"> <title>用户登录</title> <!-- 引入 React 和 ReactDOM --> <script src="https://unpkg.com/react@18/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script> <!-- 引入 Babel 编译器以支持 JSX --> <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script> </head> <body> <!-- React 渲染目标容器 --> <div id="root"></div> <!-- 使用 type="text/babel" 让 Babel 编译这段脚本 --> <script type="text/babel"> // App 组件:控制登录状态 function App() { const [isLoggedIn, setIsLoggedIn] = React.useState(false); if (!isLoggedIn) { return <Login onLoginSuccess={() => setIsLoggedIn(true)} />; } return <Dashboard onLogout={() => setIsLoggedIn(false)} />; } // Login 登录组件 function Login({ onLoginSuccess }) { print(2) const handleSubmit = async (e) => { e.preventDefault(); const formData = new FormData(e.target); const account = formData.get("account"); const password = formData.get("password"); try { const res = await fetch("/login", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ account, password }) }); const result = await res.json(); if (result.success) { onLoginSuccess(); // 登录成功,切换页面 } else { alert(result.message || "登录失败,请检查用户名或密码"); } } catch (error) { alert("网络请求出错,请稍后重试"); console.error(error); } }; print(1) return ( <div className="login-container"> <h2>欢迎登录</h2> <form onSubmit={handleSubmit}> <div className="form-group"> <label htmlFor="account">用户名</label> <input type="text" id="account" name="account" placeholder="请输入用户名" required /> </div> <div className="form-group"> <label htmlFor="password">密码</label> <input type="password" id="password" name="password" placeholder="请输入密码" required /> </div> <div className="remember-me"> <input type="checkbox" id="remember" name="remember" /> <label htmlFor="remember">记住我</label> </div> <button type="submit" className="btn-login">登录</button> </form> <div className="links"> <a href="#">忘记密码?</a> </div> </div> )} // 登录成功后显示的仪表盘 function Dashboard({ onLogout }) { return ( <div className="success_window"> <h1>🎉 登录成功!</h1> <p>欢迎回来!</p> <button onClick={onLogout} className="window_button"> 登出 </button> </div> ); } // 渲染 App 到页面 const container = document.getElementById('root'); const root = ReactDOM.createRoot(container); root.render(<App />); </script> </body> </html> 将登录显示的仪表盘改为访问home
09-29
<template> <!-- 导航栏 --> <div class="top-navbar"> <div class="logo">高校教材管理系统</div> <div class="user-info"> 欢迎您,{{ username }} <button @click="logout" class="logout-btn">退出登录</button> </div> </div> <div class="main-layout"> <!-- 左侧菜单 --> <div class="sidebar"> <div class="menu-item active">教材信息</div> </div> <!-- 主内容区 --> <div class="content"> <div class="action-bar"> <input v-model="query" placeholder="请输入教材名称或ISBN" class="search-input" /> <button @click="searchData" class="search-btn">查询</button> </div> <table class="data-table"> <thead> <tr> <th>教材名称</th> <th>ISBN</th> <th>作者</th> <th>出版社</th> <th>价格</th> </tr> </thead> <tbody> <tr v-for="item in paginatedData" :key="item.textbookId"> <td>{{ item.textbookName }}</td> <td>{{ item.isbn }}</td> <td>{{ item.author }}</td> <td>{{ item.publisher }}</td> <td>{{ item.price.toFixed(2) }}</td> </tr> </tbody> </table> <!-- 分页控件 --> <div class="pagination"> <span>共 {{ filteredData.length }} 条记录,{{ totalPages }} 页</span> <button @click="prevPage" :disabled="currentPage === 1">上一页</button> <span>第 {{ currentPage }} 页</span> <button @click="nextPage" :disabled="currentPage === totalPages">下一页</button> </div> </div> </div> </template> <script setup> import { onMounted, ref, computed } from 'vue' import { useRouter } from 'vue-router' import axios from 'axios' const router = useRouter() const allData = ref([]) const query = ref('') const currentPage = ref(1) const pageSize = 10 const username = JSON.parse(localStorage.getItem('user'))?.name || '未知用户' // 搜索过滤 const filteredData = computed(() => { const q = query.value.toLowerCase() return allData.value.filter(t => t.textbookName.toLowerCase().includes(q) || t.isbn.includes(q) ) }) // 总页数 const totalPages = computed(() => Math.max(1, Math.ceil(filteredData.value.length / pageSize))) // 当前页数据 const paginatedData = computed(() => { const start = (currentPage.value - 1) * pageSize const end = start + pageSize return filteredData.value.slice(start, end) }) // 搜索 const searchData = () => { currentPage.value = 1 } // 分页 const prevPage = () => { if (currentPage.value > 1) currentPage.value-- } const nextPage = () => { if (currentPage.value < totalPages.value) currentPage.value++ } // 加载数据 const fetchData = async () => { try { const res = await axios.get('http://localhost:8080/api/textbook/list') allData.value = res.data } catch (err) { alert('加载失败,请检查网络') } } // 退出登录 const logout = () => { localStorage.removeItem('user') router.push('/login') } onMounted(() => { const user = JSON.parse(localStorage.getItem('user')) if (!user || user.role === 'admin') { router.push('/login') } else { fetchData() } }) </script> <style scoped> /* 样式同上,完全一致 */ .top-navbar { display: flex; justify-content: space-between; align-items: center; background-color: #1890ff; color: white; padding: 12px 20px; font-size: 18px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .logo { font-weight: bold; } .user-info { display: flex; align-items: center; gap: 10px; } .logout-btn { padding: 6px 12px; background: #fff; color: #1890ff; border: none; border-radius: 4px; cursor: pointer; font-size: 14px; } .logout-btn:hover { background: #e6f7ff; } .main-layout { display: flex; min-height: calc(100vh - 52px); } .sidebar { width: 200px; background: white; border-right: 1px solid #ddd; padding: 20px 0; } .menu-item { padding: 12px 20px; cursor: pointer; border-left: 3px solid transparent; } .menu-item.active { background-color: #e6f7ff; border-left-color: #1890ff; color: #1890ff; font-weight: bold; } .content { flex: 1; padding: 20px; background-color: #f5f5f5; } .action-bar { margin-bottom: 20px; display: flex; gap: 10px; align-items: center; } .search-input { padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 14px; width: 240px; } .search-btn { padding: 10px 16px; background-color: #1890ff; color: white; border: none; border-radius: 4px; cursor: pointer; } .data-table { width: 100%; border-collapse: collapse; background: white; border-radius: 6px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .data-table th, .data-table td { padding: 12px; border: 1px solid #eee; text-align: center; } .data-table th { background-color: #f8f9fa; color: #333; font-weight: 600; } .pagination { margin-top: 20px; display: flex; justify-content: center; align-items: center; gap: 10px; color: #666; font-size: 14px; } .pagination button { padding: 6px 12px; border: 1px solid #ddd; background: white; border-radius: 4px; cursor: pointer; } .pagination button:hover:not(:disabled) { background-color: #e6f7ff; } .pagination button:disabled { color: #ccc; cursor: not-allowed; } </style> <!-- 左侧菜单 -->插入 教材采购申请 教材发放申请
12-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值