如何清理 javascript 中使用的参数?
How to sanitize parameters for use in javascript?
我有以下 php 代码:
<?php $redirect_lp = $_GET['lp']; ?>
<script>
setTimeout(function(){
window.location.href = "<?php echo $redirect_lp; ?>";
}, 10)
</script>
如何消毒 $redirect_lp
?
由于这次攻击,我知道这段代码很糟糕:
http://example.com/index.php?lp="-警报("XSS\n\n"%2bdocument.domain)-"
为了防止这种特殊的攻击,我对 "
:
进行了消毒
$redirect_lp = str_replace("\"", "", $redirect_lp);
够了吗?
基本上,只要您想将来自用户输入的内容输出到浏览器,就需要使用函数 htmlspecialchars()
。
正确的使用方法是这样的(足以防止XSS-attack):
echo htmlspecialchars($redirect_lp, ENT_QUOTES, 'UTF-8');
经过这种清理后,您可以验证 url(filter_var()
带有 FILTER_VALIDATE_URL
标志),当然如果验证通过,则允许进一步的步骤将用户重定向到指定页面。
P.S:您可能还想使用 strip_tags()
,但请记住它会删除标签,但不会删除特殊字符,例如 "
或 '
,因此如果你使用 strip_tags()
你还必须使用 htmlspecialchars()
.
首先从$redirect_lp
变量中删除所有非法字符,然后检查它是否有效URL:
<?php
$redirect_lp = $_GET['lp'];
// Remove all illegal characters from a url
$redirect_lp = filter_var($redirect_lp, FILTER_SANITIZE_URL);
?>
<?php if (filter_var($redirect_lp, FILTER_VALIDATE_URL)): ?>
<script>
setTimeout(function(){
window.location.href = "<?php echo $redirect_lp; ?>";
}, 10)
</script>
<?php endif; ?>
您可以通过多种方式 filter a string in PHP。这是清理 URL
的一种方法:
// Remove all illegal characters from a url
filter_var($redirect_lp, FILTER_SANITIZE_URL);
或者您也可以在收到输入时对其进行过滤:
$redirect_lp = filter_input(INPUT_GET, 'lp', FILTER_SANITIZE_SPECIAL_CHARS);
我有以下 php 代码:
<?php $redirect_lp = $_GET['lp']; ?>
<script>
setTimeout(function(){
window.location.href = "<?php echo $redirect_lp; ?>";
}, 10)
</script>
如何消毒 $redirect_lp
?
由于这次攻击,我知道这段代码很糟糕:
http://example.com/index.php?lp="-警报("XSS\n\n"%2bdocument.domain)-"
为了防止这种特殊的攻击,我对 "
:
$redirect_lp = str_replace("\"", "", $redirect_lp);
够了吗?
基本上,只要您想将来自用户输入的内容输出到浏览器,就需要使用函数 htmlspecialchars()
。
正确的使用方法是这样的(足以防止XSS-attack):
echo htmlspecialchars($redirect_lp, ENT_QUOTES, 'UTF-8');
经过这种清理后,您可以验证 url(filter_var()
带有 FILTER_VALIDATE_URL
标志),当然如果验证通过,则允许进一步的步骤将用户重定向到指定页面。
P.S:您可能还想使用 strip_tags()
,但请记住它会删除标签,但不会删除特殊字符,例如 "
或 '
,因此如果你使用 strip_tags()
你还必须使用 htmlspecialchars()
.
首先从$redirect_lp
变量中删除所有非法字符,然后检查它是否有效URL:
<?php
$redirect_lp = $_GET['lp'];
// Remove all illegal characters from a url
$redirect_lp = filter_var($redirect_lp, FILTER_SANITIZE_URL);
?>
<?php if (filter_var($redirect_lp, FILTER_VALIDATE_URL)): ?>
<script>
setTimeout(function(){
window.location.href = "<?php echo $redirect_lp; ?>";
}, 10)
</script>
<?php endif; ?>
您可以通过多种方式 filter a string in PHP。这是清理 URL
的一种方法:
// Remove all illegal characters from a url
filter_var($redirect_lp, FILTER_SANITIZE_URL);
或者您也可以在收到输入时对其进行过滤:
$redirect_lp = filter_input(INPUT_GET, 'lp', FILTER_SANITIZE_SPECIAL_CHARS);