Web应用程序的威胁与对策(14)
时间:2025-07-09
时间:2025-07-09
复制代码
' OR 1=1 -
建立此命令:
复制代码
SELECT * FROM Users WHERE UserName='' OR 1=1 -
因为 1=1 恒成立,攻击者将检索 Users 表格中的每一行数据。
防止 SQL 插入的对策包括:
执行彻底的输入验证。您的应用程序应在向数据库发送请求之前验证其输入。 将参数化的存储过程用于数据库访问,以确保不会将输入字符串误认为可执行语句。如果您不能使用存储过程,那么在
建立 SQL 命令时请使用 SQL 参数。
标准化 使用最低特权的帐户来连接数据库。
将不同形式的输入解析为相同的标准名称(标准的名称),称为标准化。如果代码使安全决策基于作为输入传递给程序的资源的名称,那么代码特别容易受到标准化问题的影响。文件、路径和 URL 都是易受标准化问题影响的资源类型,因为对于以上每种资源类型都有不同的方法来表示相同的名称。文件名也是有问题的。例如,单个文件可以表示为:
复制代码
c:\temp\somefile.dat
somefile.dat
c:\temp\subdir\..\somefile.dat
c:\ temp\ somefile.dat
..\somefile.dat
理论上,您的代码不接受输入文件名。如果是这样,则应在作出安全决策之前将名称转变为标准形式,例如批准或拒绝对指定文件的访问。
解决标准化问题的对策包括:
尽可能避免输入文件名,而使用最终用户无法更改的绝对文件路径。