form.submit() 不执行问题

本文介绍了如何通过自定义函数解决表单提交中输入名称冲突的问题,并提供了改进后的表单提交解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script type="text/javascript">
function sub(form, actionName) {
form.action = actionName;
form.submit();
}
</script>
<body>
<form name="form" id="form" method="post" action="login/login_loginIn.action" target="tbottom">
<div id="inputAccount">
账号:<input name="userName" />
</div>
<div id="inputPassword">
密码:<input name="userPwd" type="password"/>
</div>
<input name="submit" type="button" value="登 录" onClick="sub(this.form, 'login/login_loginIn.action');" />

</form>
</body>
由于提交的input name设置为submit有重名问题,所以form.submit 无法提交表单,更换成
<input [color=red]name="submit1"[/color] type="button" value="登 录" onClick="sub(this.form, 'login/login_loginIn.action');" />即可以提交表单
### 关于 HackBar 插件中 `form.submit` 是函数的错误原因及解决方法 #### 错误原因分析 在 HTML 和 JavaScript 中,如果页面中的表单元素存在名为 `submit` 的 `<input>` 或其他标签,则会覆盖默认的 `form.submit()` 方法。这会导致调用 `form.submit()` 时抛出 `form.submit is not a function` 的错误[^2]。 具体来说,当开发者定义了一个具有 `id="submit"` 或 `name="submit"` 属性的输入框或其他 DOM 元素时,该属性名会被解析为同名变量并优先级高于原生的 `form.submit()` 函数。因此,JavaScript 将无法识别 `form.submit()` 作为可执行的方法。 此外,某些浏览器扩展(如 HackBar)可能依赖特定版本的功能实现,而新版本浏览器的安全机制可能导致其功能受限或失效[^3]。 --- #### 解决方案 ##### 修改前端代码 最简单的解决方案是对目标网页的 HTML 结构进行调整。将任何命名为 `submit` 的控件重命名即可解决问题。例如: 原始代码: ```html <form action="/login" method="POST"> <input type="text" name="username" /> <input type="password" name="password" /> <input id="submit" type="button" value="Submit" onclick="myForm.submit()" /> </form> ``` 修正后的代码: ```html <form action="/login" method="POST"> <input type="text" name="username" /> <input type="password" name="password" /> <input id="customButton" type="button" value="Submit" onclick="document.forms[0].submit()" /> </form> ``` 通过移除 `id="submit"` 并改用通用方式访问表单对象(如 `document.forms[0]`),可以有效规避冲突问题。 --- ##### 更新或替换 HackBar 插件 由于现代浏览器加强了安全策略,部分旧版插件可能会遇到兼容性问题。对于 HackBar 来说,推荐采取以下措施之一: 1. **安装较老版本** 如果当前使用的 HackBar 版本支持最新浏览器环境,可以选择安装早期稳定版本(如 v2.1.3)。过需要注意的是,这些老旧版本可能存在安全隐患,仅建议用于学习目的。 2. **寻找替代工具** 当前有许多更现代化且安全性更高的调试工具可供选择,比如 Burp Suite Free Edition、Postman 或者直接利用 Chrome 开发者工具模拟 POST 请求操作。这类工具仅具备强大的功能集,还能够更好地适配主流浏览器生态体系。 --- ##### 测试与验证 完成上述更改之后,可以通过实际测试确认问题是否得到彻底修复。以下是基于 Python 的简单脚本示例,演示如何发送带有 SQL 注入参数的 POST 请求以供进一步研究: ```python import requests url = 'http://example.com/login' data = { 'username': "' OR '1'='1", 'password': '' } response = requests.post(url, data=data) if response.status_code == 200: print('Request successful!') else: print(f'Request failed with status code {response.status_code}') ``` 以上代码片段展示了如何绕过图形界面限制,直接向服务器发起定制化 HTTP 请求来检测潜在漏洞情况。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值