我正在创建一个网站(假设它将拥有大量用户),这将使用户使用所有字符,因此它可能包含{
"type": "FeatureCollection",
"features": [
{
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[37.2732892, 55.9551567], [37.8780522, 55.9633486], [37.993164, 55.5512744], [37.1913337, 55.5559836]]]]
}
}
]
}
,>
和{{}等字符1}}。
所以有人建议我使用htmlentities()而不是strip标签。对于SQL注入,hmmlentities是否合理安全?还有一种更安全的方法可以轻松实现到我的网站中,这比htmlentities和strip标签更好吗?
我想知道那是什么,无论你的解决方案是什么,你如何亲自在php中改善这种安全性(javascript的帮助也是例外):
<
这是我的简单问题。欢呼声。
答案 0 :(得分:3)
hello<there>
,则会删除<there>
,然后密码就会hello
。这可能会导致很多问题。
同样,htmlentities对SQL注入也没有帮助。此功能只是将HTML标记和字符转换为它们的实体格式,从而防止它在显示在网页上时引起问题。
为了安全地防止SQL注入,您不需要htmlentities或strip_tags。你需要的是准备好的陈述。使用占位符正确准备查询。另请注意,mysql_ *函数现已弃用;你应该使用mysqli_ *或PDO。
脱离我的头顶,未经测试:
/* Create a new mysqli object with database connection parameters */
$mysqli = new mysqli('localhost', 'username', 'password', 'db');
if(mysqli_connect_errno()) {
echo "Connection Failed: " . mysqli_connect_errno();
exit();
}
/* Create a prepared statement */
$stmt = $mysqli->prepare('SELECT first_name, last_name, bio FROM users WHERE username=?');
/* Bind parameters
s - string, b - blob, i - int, etc */
$stmt->bind_param('s', $user);
/* Execute it */
$stmt->execute();
/* Get a result set from the prepared statement */
$result = $stmt->get_result();
/* Fetch result rows as an associative array */
while ($row = $result->fetch_assoc()) {
echo '<pre>'.print_r($row, 1).'</pre>';
// do something with $row
}
有关详细信息,请参阅: