如果我提交输入复选框或收音机或选择,具有固定内容,是否可以从XSS中受到攻击?如果有,怎么样?如何预防?
答案 0 :(得分:1)
是否固定内容,这并不重要。一个&#34;攻击者&#34;如果他愿意,可以改变它。但是......即使它没有改变:如果它依赖于客户发送的数据,一切都容易受到XSS的攻击。</ p>
如何预防? 逃避一切!
如何做到这一点......这取决于你可以做服务器端(PHP等)或客户端(javascript)。但不要依赖javascript。攻击者可以强制数据不被javascript间隔或解析。
所以....逃离服务器端
PHP:
$safeData = htmlentities($vulnerableData);
答案 1 :(得分:0)
如果用户可以看到它,他们可以修改它。始终验证每个输入。
答案 2 :(得分:0)
当使用用户输入的信息生成页面的某些元素时,可能会发生XSS。
请看下面的代码:
<input type="checkbox" value="<?php echo $variableContainingUserInput; ?>" />
如果您的用户输入以下字符串:
" /> <script> window.location = "maliciouswebsite.com"; </script>
生成的HTML将如下所示:
<input type="checkbox" value="" /> <script> window.location = "maliciouswebsite.com"; </script>" />
事实上,这会将用户重定向到相关的恶意网站。
简而言之,如果用户提交的任何内容最终会在您网站的任何页面上显示,则可能会有危险。
Here是关于SO的类似问题。
答案 3 :(得分:0)
在防止XSS方面有很多事情要做。这应该涵盖脚本端的大部分内容以及如果您有敏感信息,您应该使用来自Verisign等受信任来源的 SSL证书或投保人。您可以获得128或256位证书,具体取决于您要存储的内容。这只是脚本,您还必须确保使用正确的数据库函数来安全地存储数据。
另外,当你有机会覆盖你所要求的大部分内容时,请检查一下: https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet
如果您需要有关如何保护输入字段的提示,请在 SSL证书之上进行操作:
防止跨站点脚本攻击
@ref:http://www.sitepoint.com/php-security-cross-site-scripting-attacks-xss/
您也可以使用表单令牌
<?php
$token = md5(time());
$fp = fopen('./tokens.txt', 'a');
fwrite($fp, "$token\n");
fclose($fp);
?>
<form method="POST">
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<input type="text" name="message"><br />
http://phpsec.org/projects/guide/2.html
完成所有操作后,就会有数据库存储端。不要使用mysql_ *函数,而是使用PDO或Prepared Statements。