草庐IT

SECURITY

全部标签

php - 为防止 XSS 和 SQL 注入(inject)而限制的字符列表?

我已经阅读了很多文章以找到一个简单的字符列表,这些字符可以限制用户输入以保护我的网站免受XSS和SQL注入(inject)攻击,但找不到任何通用列表。在这方面,有人可以简单地给我一个安全或不安全字符的列表来帮助我吗?我知道这可能是特定于字段的,但我需要将其用于我希望允许最大可能字符的文本字段。 最佳答案 “黑名单”方法充满了问题。对于SQLi和XSS,针对白名单的输入验证是必不可少的,即定义您期望而不是您不期望的内容。还请记住,用户输入-或“不受信任的数据”-来自许多地方:表单、查询字符串、header、ID3和exif标签等。对于

php - 加密和解密数据库中的所有数据

我希望能够加密我保存在MySQL数据库中的所有数据。我还需要能够使用私钥解密数据。此数据库可供多人访问。我想知道我需要使用哪些PHP功能来完成此任务。谢谢 最佳答案 加密整个数据库很麻烦,除非数据库提供“透明加密”,Oracle数据库提供这样的功能。使用透明加密的轻量级开源解决方案是SQLite.使用此功能,加密不会直接应用于数据,但存储本身会被加密。这意味着您可以像往常一样处理您的数据库,并获得额外的好处,即物理存储是加密的。但不幸的是,MySQL不提供这样的东西。首先,为什么加密您的整个数据库不是一个好主意。加密数据对您的数据库

PHP mysql_real_escape_string() 和 % 字符

mysql_real_escape_string()对%(百分比)字符有什么作用,它代表了多少安全风险(以及如何解决)? 最佳答案 来自mysql_real_escape_string()documentation:Note:mysql_real_escape_string()doesnotescape%and_.ThesearewildcardsinMySQLifcombinedwithLIKE,GRANT,orREVOKE.就安全性而言,除非您正在运行LIKE、GRANT或REVOKE,否则这不是问题。LIKE可能是唯一真正关注

php - 除了 SQL 注入(inject)和 XSS 攻击,还有什么我需要担心的吗?

我正在完成我的第一个“真正的”PHP应用程序,我正在努力确保它是安全的。我有点担心,因为我不是“专家”PHP程序员,我可能会遗漏一些巨大的东西,所以我想给你一些关于我的应用程序的信息,希望你能告诉我这是否是案子。所以我们开始吧:我正在使用CMS来处理用户身份验证,所以我不必担心那个。开始工作后不久发现PDO在我的应用程序中,我将所有代码移植到使用准备好的与PDO的声明。我正在转义使用htmlentities()输出的所有表单和数据库数据(甚至是我认为安全的东西)。我的应用程序确实使用了session变量和cookie变量,但两者的功能并不重要。我设计表单处理函数的方式是,无论表单是否以

PHP 安全性、intval 和 htmlspecialchars

User:你能从上面的代码中看出什么威胁吗?我必须对我输出的所有内容使用htmlspecialchars吗?我应该使用is_numeric还是intval来检查获取的是数字?我只是在构建一个最小的网站。我只是想知道上面的代码是否容易受到sql注入(inject)、xss的攻击? 最佳答案 一般来说mysql_real_escape_string()是首选,但因为它是一个数字,intval()可以。所以是的,从安全角度来看,它看起来不错。但有一件事,在许多平台上,整数被限制为32位,所以如果你想处理大于~21亿的数字,那么它将不起作用

php - 密码安全;这样安全吗?

我昨天问了一个关于密码安全的问题...我是安全新手...我正在使用mysql数据库,需要在那里存储用户密码。答案告诉我,散列然后保存密码的HASHED值是执行此操作的正确方法。所以基本上我现在想和你们确认这是正确的。这是一个分类网站,对于用户放置的每个分类,他都必须输入密码,以便他/她以后可以使用该密码删除分类(例如,当产品出售时)。在名为“put_ad.php”的文件中,我使用$_POST方法从表单中获取通行证。然后我对其进行哈希处理并将其放入mysql表中。然后,每当用户想要删除广告时,我都会通过散列来检查输入的密码,并将输入密码的散列值与mysql数据库中的散列值进行比较,对吧?

php - mysql_real_escape_string 应该是我在注册表单中输入的密码吗?

当用户注册时,我使用mysql_real_escape_string清除密码,如下所示$password=clean($_POST['password']);在将其添加到数据库之前,我使用:$hashedpassword=sha1('abcdef'.$password);并将其保存到mySQL中。我的问题是我应该清理它还是在将密码添加到数据库之前对密码进行哈希处理? 最佳答案 嗯,有一个主要的误解。mysql_real_escape_string()不清理任何东西。它与安全完全无关。此函数仅用于转义分隔符,仅此而已。它可以帮助您将字

php - 这个字符串替换足以抵御 SQL 注入(inject)攻击吗?

我正在尝试评估一种自定义的CMS。开发人员针对SQL攻击使用的保护措施是:str_replace("'","\'",$_POST[$variable]);这是否足够好,或者有什么方法可以利用它来注入(inject)SQL代码?PS:我知道标准方法是使用mysql_real_escape_string(),但我想了解代码的总体质量。 最佳答案 没有。放入一些UTF8字符,这会导致代码出现乱码或被转义。使用mysqli/PDO,或者如果必须,使用mysql_real_escape_string。

php - MySQLi和PDO哪种方式更安全

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。到目前为止,我发现MySQLi和PDO都是连接数据库的好方法。我需要的是两者之间哪种方法更安全。特别是对于一个为将与大量人交互的大型项目开发网站的人而言

mysql - 防止恶意sql注入(inject)

我有一堆perlCGI,它们接受参数并在各种DBImySql查询中使用它们的值。如果我不允许任何用户提交包含单词select、insert、delete或update的值用作参数和只要我将所有varchar用户提供的值用单引号括起来就可以吗?我意识到这个问题与其他人提出的问题非常相似,但其他人似乎都指向各种PHP解决方案,而我没有使用PHP,所以请原谅冗余,或者给我指出一个相关的问题来回答这个具体问题。 最佳答案 在Perl中处理此问题的正确方法是使用placeholders在你所有的SQL查询中。通过DBI占位符传递用户提供的数据