MySQL 上 SQL 注入安全的最佳解决方案是什么?
运行字符串以确保不可能进行 MySQL 注入的最佳函数是什么?
另外,是否需要在退出时通过另一个函数运行它才能使其正确显示?
也可以看看
参数真的足以防止 Sql 注入吗?
带有in
子句的 C# 参数化查询 MySQL
我可以防范 SQL 注入吗通过转义单引号和 围绕用户输入 单引号?
What is the best function to run my strings through to ensure that MySQL injection is impossible?
Also, will it require running it through another function on the way out to make it display correctly?
See also
Are Parameters really enough to prevent Sql injections?
C# Parameterized Query MySQL within
clause
Can I protect against SQL Injection by escaping single-quote and
surrounding user input with
single-quotes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
参数化查询
Parameterized Queries
参数函数。
抛开幽默不谈,我的意思是,如果可以完全避免的话,就不要将用户输入的内容作为 SQL 动态执行。 将所有内容作为参数传递,并从查询中引用它们。 请参阅 Chad Birch 的回答,获取解释这一点的良好链接。
A parameter function.
Humor aside, I mean don't dynamically execute user-entered content as SQL if you can at all avoid it. Pass everything as parameters, and reference them from your query instead. See Chad Birch's answer for a good link explaining this.
正如 Chad 所说,始终使用参数化查询来避免 SQL 注入。
要回答问题的后半部分,如果您的输出是网页,则始终转义任何特殊 HTML 字符(
&
、<
、> 等)。
)以防止脚本注入。As Chad says, always use parameterized queries to avoid SQL injection.
To answer the second half of your question, if your output is to a web page then always escape any special HTML characters (
&
,<
,>
) to protect against script injection.在应用程序中使用输入验证添加到参数化查询中。 永远不要相信输入是干净的。 核实。 例如,如果它应该是一个整数,请检查以确保它可以毫无问题地转换为数值。
Add to parameterized queries the use of input validation within the application. Never trust that the input is clean. Check it. For instance, if it's supposed to be an integer, check to make sure it converts to a numeric value without issue.
在 PHP 中,最好的方法是对字符串使用 HTML 转义。
它将特殊字符转换为 HTML 兼容字符。
示例:“ ”(空格)转换为“%20”。
In PHP the best way is to use HTML escaping on strings.
It turns special characters into HTML compliant characters.
Example: " " (space) transforms into "%20".