我还能做些什么来防止 XSS 注入和攻击? SQL注入?
如果我的网站上线(不认为会,目前只是一个学习练习)。
我一直在使用 mysql_real_escape_string();来自 POST、SERVER 和 GET 的数据。 另外,我一直在使用 intval();只能是数字的字符串。
我认为这可以让我免受sql注入的影响?正确的?我可以做更多吗?
但是,我不确定它如何提供(如果它提供任何保护的话)XSS 注入?
如果您提供有关如何对抗这两种形式的攻击的更多信息,我们将不胜感激。
If my site ever goes live (don't think it will, its just a learning exercise at the moment).
I've been using mysql_real_escape_string(); on data from POST, SERVER and GET.
Also, I've been using intval(); on strings that must only be numbers.
I think this covers me from sql injection? Correct? Can i do more?
But, I'm not sure how it provides (if it provides any protection at all) from XSS injection?
Any more information on how to combat these two forms of attacks is appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,它会让你的数据变得一团糟。
是的。您可以保护您的代码免受 SQL 注入。
这是我已经做了一个简短的解释
只是我必须补充一点,你不应该破坏你的源数据数组。
POST 数组与 SQL 无关。数据可能会进入电子邮件、HTML 表单、文件、在线服务等。为什么要对它们进行 SQL 保护?
另一方面,您可以不从 POST 获取数据,而是从文件、在线服务或其他查询获取数据。
因此,您必须保护的不是源数组,而是进入查询的实际数据
说到 XSS,又不存在简单的通用规则。
但一般来说,您必须对以文本形式输出的每个不受信任的数据使用 htmlspecialchars($data,ENT_QUOTES); ,并在某些特殊情况下使用其他类型的验证,例如文件名
No. It makes a terrible mess of your data.
Yes. You can protect your code from SQL injections.
Here is a brief explanation I've made already
Only I have to add that you should not spoil your source data arrays.
POST array has noting to do with SQL. The data may go into email, an HTML form, a file, online service, etc. Why treat it all with SQL protection?
On the other hand, you may take your data not from POST but from a file, online service, other query.
So, you have to protect not source arrays, but actual data that goes into query
Speaking of XSS, there are no simple universal rule again.
But in general, you have to use
htmlspecialchars($data,ENT_QUOTES);
for the every untrusted data you output as a text, and some other kinds of validations in some special cases, like filenames使用硬编码准备好的查询
Used hard coded prepared queries