当我尝试验证文档时,我收到此错误"Error: = in an unquoted attribute value. Probable causes: Attributes running together or a URL query string in an unquoted attribute value."
。
这是我的代码:
print("<a href=" . $_SERVER["PHP_SELF"] . '?id=' . $student->hentId() . ">" . $student->hentNavn() . "</a><br/>\n");
HTML输出如下所示:
<a href=/StudentDatabase/StudentRegister.php?id=1>Petter Andersen</a><br/>
如何正确添加报价?
答案 0 :(得分:1)
直接在链接中使用$_SERVER["PHP_SELF"]
是不安全的。根据您的代码,网站可能容易受到XSS攻击,并且只需访问page/url/%22%3E%3Cscript%3Ealert('xss')%3C
/script%3E%3Cfoo%22
就会注入不需要的JavaScript。 student id
或student name
也是如此,如果此记录未经过清理,则html
可能会被破坏或易受XSS攻击。
建议使用函数rawurlencode
,urlencode
,htmlspecialchars
来清理生成的链接。
<?php
$url = rawurlencode($_SERVER["PHP_SELF"]) . "?id=" . urlencode($student->hentId());
?>
<a href="<?php echo htmlspecialchars($url); ?>">
<?php echo htmlspecialchars($student->hentNavn()); ?>
</a>
答案 1 :(得分:0)
通过\
转义引号来添加引号你想让id = 1在网址中吗?我猜这是它认为缺少引号的属性
print("<a href=\" . $_SERVER["PHP_SELF"] . '?id=' . $student->hentId() . \">" . $student->hentNavn() . "</a><br/>\n");