如何在PHP中清理散列转换器的输入?

如何在PHP中清理散列转换器的输入?,php,md5,sha1,sanitize,rainbowtable,Php,Md5,Sha1,Sanitize,Rainbowtable,我已经做了一个网站,从用户输入纯文本生成哈希,用户可以输入一个单词/短语,并从MD5或SHA1(或两者)中选择。然后,站点接收该输入并将其转换为MD5&SHA1,并将其存储在数据库中,然后将其返回给用户。用户还可以在搜索栏中输入哈希值,如果数据库有哈希值,它将返回原始单词,目的是生成众包哈希表,同时为用户提供好处。我已经让主要功能正常工作了,但我对应该清理哪些内容感到进退两难,我希望用户能够输入特殊字符,因为这将提高搜索功能返回结果的机会,任何建议都将不胜感激,谢谢。如果只是对任何内容进行哈希处

我已经做了一个网站,从用户输入纯文本生成哈希,用户可以输入一个单词/短语,并从MD5或SHA1(或两者)中选择。然后,站点接收该输入并将其转换为MD5&SHA1,并将其存储在数据库中,然后将其返回给用户。用户还可以在搜索栏中输入哈希值,如果数据库有哈希值,它将返回原始单词,目的是生成众包哈希表,同时为用户提供好处。我已经让主要功能正常工作了,但我对应该清理哪些内容感到进退两难,我希望用户能够输入特殊字符,因为这将提高搜索功能返回结果的机会,任何建议都将不胜感激,谢谢。

如果只是对任何内容进行哈希处理,您不必清理任何内容,因为散列函数通常不易受到注入攻击


当然,您应该清理所有数据库输入(用于插入和搜索)。但是,除非您使用的是不支持参数化查询的过时数据库API(例如
mysql.*
函数;避免这些),否则这将自动完成。

我认为您的应用程序没有理由对任何内容进行清理。您对用户输入所做的一切就是将其提供给加密哈希函数,这些函数将愉快地接受任何字节序列

当然,如果要在结果页上显示输入字符串,则在将其嵌入HTML代码之前,应使用转义。类似地,如果要将其作为参数包含在URL中,则应使用转义函数进行转义,如果要将其存储在SQL数据库中,则应使用数据库驱动程序的相应转义函数(例如)进行转义,或者仅使用


还要注意,加密哈希函数对字节字符串而不是字符串进行操作。这意味着,特别是对于包含非ASCII字符的文本,哈希值将取决于用于将其编码为字节的值。对于Unicode文本,它也可能取决于所使用的。UTF-8(带有标准化表单C或D,或者用户浏览器发送的任何内容)可能是当今相当常见的选择,但如果您想提供帮助,您可能希望为用户提供不同编码的选择。

-1用于创建此服务。只要您在转换为哈希时对输入进行MD5'ing或SHA1'ing,没有什么需要消毒的,对吗?当搜索一个现有的散列时,它无论如何不应该包含特殊字符,所以应该对其进行清理。我还重新记录了你的问题。这叫做a,不是a-这是不同的。@WasimAbu Nassar这是我的第一个编程项目,你有什么问题吗?彩虹表用于破解密码。。。这就是@WasimAbu Nassar的问题。谢谢你的回复。我认为@Danny Beckett的建议是一个可行的选择,如果在将字符串插入数据库之前将其转换为MD5或SHA1,我认为不会存在漏洞。尽管我将研究htmlspecialchars()以将其嵌入HTML代码中,谢谢