【发布时间】:2021-08-18 12:49:39
【问题描述】:
我正面临如下渗透测试问题。有没有办法让我们可以从 java 脚本端将方法限制为 POST。试过 .setAttribute('method', 'POST') 但这会破坏应用程序。有没有其他方法可以实现这一点,以便解决渗透测试问题?我正在使用条纹表单和按钮,如下面的 sn-p 所示。
设计为 POST 的请求被接受为 GET . 应用程序将接受并处理作为 GET 发送的请求,即使它被设计为用作 POST。 GET 请求公开任何包含的参数 浏览器历史记录、打印页面和服务器日志。 POST 可以防止这些暴露。
<stripes:form autocomplete="off" beanclass="com.demo.SubmitEmployeeAction" id="submitEmployeeForm" name="submitEmployeeForm">
$("#submitEmp").click(function(event){
event.preventDefault();
document.submitEmployeeForm.action='SubmitEmployee.action?submitEmployeeForm=';
$("#submitEmp").attr('disabled','disabled');
$("#submitEmployeeForm").submit();
});
<button id="submitEmp" class="grayBtnCancel" style="font-size: 93%;" >Submit Employee</button>
【问题讨论】:
-
令人困惑,但您可以使用 NGINX 阻止这些请求...仅在可能更改设置/等的页面上允许它...如果您还没有...插入 nginx 后面的服务器并设置在那里保护你。
-
您可以使用 Stripes 拦截来确保 HTTP 方法正确。在我的 Stripes 应用程序中,这是基于 Action 方法(“事件”方法)上的注释,因此对于需要 POST 的 Action/事件目标的传入 HTTP 请求可能会被拒绝。它不会自动发生;应用程序必须主动阻止它。
标签: javascript post get request pen