我想允许用户通过textarea
表单提交提交输入,并对提交的文本执行SHA256哈希。哈希容易受到攻击吗?我应该在散列之前“清理”输入吗?如果是这样,最好的方法是什么?是否足以使用strip_tags
或者我可以通过对字符串等执行htmlspecialchars()
函数来转换输入。
代码示例
<html>
<head>
<title>SHA256 on user input</title>
</head>
<body>
<?
if ($_SERVER['REQUEST_METHOD'] != 'POST' || empty($_POST['hashThis']) ):
?>
<form name="user_data" method="POST" action="">
<textarea name="hashThis"></textarea>
<input type="submit" name="submit" value="submit" />
</form>
<?
else:
echo hash('sha256', $_POST['hashThis']);
endif;
?>
</body>
</html>
答案 0 :(得分:1)
只要执行哈希是用户输入的唯一事情,这是非常安全的。您不需要对数据进行任何类型的预处理以使其可以安全地进行散列,并且只要您没有打开原始输出(默认情况下它是关闭的),输出就可以安全打印。