Javascript输入问题
Javascript input issue
我已经编写了一个代码,用于在提交表单时重定向页面。我有一个下拉菜单和该形式的文本框。我输入</script>
作为文本框的输入,这导致了正常的执行,但屏幕上有);
。
这是我从我的火虫工具中得到的
<script type="text/javascript">
loadSearch('Customer','
</script>
');
用于提交的 PHP 代码
<?php
if($_POST['searchButton']){
echo "<script type='text/javascript'>loadSearch('".$_REQUEST['search_details']."','".$_REQUEST['search_input']."'); </script>";
}
?>
JAVASCRIPT
function loadSearch(selM,selK){
document.location.href="index.php?pg=search&selM="+selM+"&selK="+selK;
}//loadSearch
注意:文本框$_REQUEST['search_input']
,如果文本框以</script>
作为输入
服务器端代码中存在严重漏洞。您应该始终使用 htmlspecialchars
等方法清理由用户输入产生的字符串。
取代:
$_REQUEST['search_details']
和
$_REQUEST['search_input']
跟:
htmlspecialchars($_REQUEST['search_details'], ENT_QUOTES, 'UTF-8')
和
htmlspecialchars($_REQUEST['search_input'], ENT_QUOTES, 'UTF-8')
不这样做会使您的网站容易受到攻击,恶意用户可能包含脚本来窥探您的用户。此函数的作用是将特殊字符(如<
)转换为 html HTML 字符实体(如<
),以便客户端的浏览器无法将其解释为代码。
问题是您将请求值转储到页面中而不对它们进行任何转义。由于这是JavaScript,一个快速的解决方法是使用json_encode()
将值编码为JSON:
<?php
if($_POST['searchButton']){
echo "<script type='text/javascript'>loadSearch(".
str_replace(json_encode($_REQUEST['search_details']), '<', ''x3C') . ", " .
str_replace(json_encode($_REQUEST['search_input']), '<', ''x3C').
");</script>";
}
?>
此外,您的函数应该使用 encodeURIComponent()
:
function loadSearch(selM,selK){
document.location.href="index.php?pg=search&selM="+
encodeURIComponent(selM) + "&selK=" +
encodeURIComponent(selK);
}
但问题仍然存在:如果您真正想做的是将用户重定向到搜索页面,那么为什么要首先使用这种迂回的脚本方法?为什么不直接从您的 PHP 进行重定向?
为什么你不考虑使用没有任何php的纯JavaScript?
<input type="text" id="selM">
<input type="text" id="selK">
<input type="button" onclick="loadSearch(document.getElementById('selM').value,document.getElementById('selK').value);">
相关文章:
- Javascript,文件输入和FormData问题
- 将输入值设置为ng模型属性[Angular]时出现问题
- ReactJS中动态生成的输入文本字段值设置问题
- 选中复选框的Jquery/Javascript问题使用输入框操作将行从一个表添加到另一个表
- 将“提示”对话框中的输入替换为星号时出现问题
- 扫描仪设备或手动输入的识别输入问题
- Safari手机文本输入问题
- 有关 Javascript IndexedDB 输入信息的问题
- 我在添加更多输入字段时遇到问题,文本字段中的值不会保留
- Magento自定义选项-清除输入字段问题
- mongodb用户配置文件添加输入时出现问题
- Safari存在文本输入问题,用户输入时会选择文本,导致文本丢失
- 单击输入区域时出现问题
- 文本框聚焦事件并在IE9中输入问题
- 使用最接近查找文本输入的JQuery问题
- 鼠标输入事件上的jQuery延迟出现问题
- 如何解决区分大小写搜索的搜索输入问题
- 搜索输入问题显示滚动
- 在动态更改的文本区域中输入文本时出现问题
- 与“选择”有关的问题输入字段