PHP SHA256 散列用户提交的内容而不先获取是否安全?

Is it safe to PHP SHA256 hash user submited content without vetting first?

我想允许用户通过 textarea 表单提交来提交输入并对提交的文本执行 SHA256 哈希。哈希容易受到攻击吗?我应该 "clean" 散列之前的输入吗?如果是这样,解决这个问题的最佳方法是什么?使用 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>

只要执行散列是 唯一 您对用户输入所做的事情,这是绝对安全的。您不需要对数据进行任何类型的预处理以使其安全散列,只要您没有打开原始输出(默认情况下关闭),输出就可以安全打印。